È questo il modo più pulito per scrivere una lista in un file, dal momento che writelines()
non inserisce caratteri newline?
file.writelines(["%s\n" % item for item in list])
Sembra che ci sia un modo standard...
Si può usare un ciclo:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
In Python 2, puoi anche usare
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
Se siete interessati ad una singola chiamata di funzione, almeno rimuovete le parentesi quadre []
, in modo che le stringhe da stampare vengano fatte una alla volta (un genexp piuttosto che un listcomp) -- non c'è motivo di occupare tutta la memoria necessaria per materializzare l'intera lista di stringhe.
Cosa farete con il file? Questo file esiste per gli esseri umani, o per altri programmi con chiari requisiti di interoperabilità?
Se state solo cercando di serializzare una lista su disco per un uso successivo da parte della stessa applicazione python, dovreste pickleing la lista.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
Per rileggerla:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
Il modo più semplice è:
``lang-python outfile.write("\n".join(itemlist))
Potreste assicurarvi che tutti gli elementi in itemlist siano stringhe usando un'espressione generatrice:
``lang-python
outfile.write("\n".join(str(item) per item in itemlist))
Ricordate che tutte le liste itemlist
devono essere in memoria, quindi, fate attenzione al consumo di memoria.