Ali je to najčistejši način za zapis seznama v datoteko, saj writelines()
ne vstavlja znakov nove vrstice?
file.writelines(["%s\n" % item for item in list])
Zdi se, da bi moral obstajati standardni način...
Uporabite lahko zanko:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
V Pythonu 2 lahko uporabite tudi
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
Če želite poklicati samo eno funkcijo, odstranite vsaj oglate oklepaje []
, tako da se nizi, ki jih je treba natisniti, izdelajo eden za drugim (genexp in ne listcomp) - ni razloga, da bi porabili ves pomnilnik, potreben za materializacijo celotnega seznama nizov.
Kaj boste naredili z datoteko? Ali ta datoteka obstaja za ljudi ali druge programe z jasnimi zahtevami za interoperabilnost?
Če želite seznam samo serializirati na disk za poznejšo uporabo v isti aplikaciji python, morate seznam pickleing.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
Če ga želite prebrati nazaj:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
Enostavnejši način je:
outfile.write("\n".join(itemlist))
S pomočjo generatorskega izraza lahko zagotovite, da so vsi elementi v seznamu elementov nizi:
outfile.write("\n".join(str(item) for item in itemlist))
Ne pozabite, da morajo biti vsi itemlist
listi v pomnilniku, zato pazite na porabo pomnilnika.