Er dette den reneste måten å skrive en liste til en fil, siden writelines()
ikke setter inn ny linje?
file.writelines(["%s\n" % item for item in list])
Det virker som om det ville være en standard måte...
Du kan bruke en sløyfe:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
I Python 2 kan du også bruke
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
Hvis du'er opptatt av et enkelt funksjonskall, fjern i det minste hakeparentesene []
, slik at strengene som skal skrives ut blir laget en om gangen (en genexp i stedet for en listcomp) - ingen grunn til å ta opp alt minnet som kreves for å materialisere hele listen med strenger.
Hva skal du gjøre med filen? Finnes denne filen for mennesker eller andre programmer med klare krav til interoperabilitet?
Hvis du bare prøver å serialisere en liste til disk for senere bruk av den samme python-appen, bør du pickle listen.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
For å lese den tilbake:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
Den enklere måten er:
outfile.write("\n".join(itemlist))
Du kan sørge for at alle elementene i elementlisten er strenger ved hjelp av et generatoruttrykk:
outfile.write("\n".join(str(item) for element i itemlist))
Husk at hele itemlist
-listen må være i minnet, så vær forsiktig med minneforbruket.