Er dette den reneste måde at skrive en liste til en fil på, da writelines()
ikke indsætter newline-tegn?
file.writelines(["%s\n" % item for item in list])
Det virker som om der ville være en standard måde...
Du kan bruge en løkke:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
I Python 2 kan du også bruge
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
Hvis du er opsat på et enkelt funktionskald, så fjern i det mindste de firkantede parenteser []
, så de strenge, der skal udskrives, bliver lavet én ad gangen (en genexp i stedet for en listcomp) -- ingen grund til at optage al den hukommelse, der er nødvendig for at materialisere hele listen af strenge.
Hvad vil du gøre med filen? Findes denne fil til mennesker eller andre programmer med klare krav til interoperabilitet?
Hvis du blot forsøger at serialisere en liste til disk til senere brug af den samme python-app, bør du pickleing listen.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
For at læse den tilbage:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
Det er nemmere at gøre det på denne måde:
outfile.write("\n".join(itemlist))
```
Du kan sikre, at alle elementer i item list er strenge ved hjælp af et generatorudtryk:
````lang-python
outfile.write("\n".join(str(item) for item in itemlist)))
```
Husk, at alle `itemlist`-lister skal være i hukommelsen, så vær opmærksom på hukommelsesforbruget.