Onko tämä siistein tapa kirjoittaa lista tiedostoon, koska writelines()
ei lisää rivinvaihtomerkkejä?
file.writelines(["%s\n" % item for item in list])
Vaikuttaa siltä, että olisi olemassa vakiotapa...
Voit käyttää silmukkaa:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
Python 2:ssa voit myös käyttää
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
Jos olet kiinnostunut yhdestä funktiokutsusta, poista ainakin hakasulkeet []
, jotta tulostettavat merkkijonot muodostetaan yksi kerrallaan (genexp eikä listcomp) -- ei ole mitään syytä käyttää kaikkea muistia, joka tarvitaan koko merkkijonojen listan materialisointiin.
Mitä aiot tehdä tiedostolla? Onko tämä tiedosto olemassa ihmisiä tai muita ohjelmia varten, joilla on selkeät yhteentoimivuusvaatimukset?
Jos yrität vain sarjallistaa luettelon levylle saman python-sovelluksen myöhempää käyttöä varten, sinun pitäisi pickleerata luettelo.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
Lukea se takaisin:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
Yksinkertaisempi tapa on:
outfile.write("\n".join(itemlist))
Voit varmistaa, että kaikki item-listan kohteet ovat merkkijonoja käyttämällä generaattorilauseketta:
outfile.write("\n".join(str(item) for item in itemlist))
Muista, että kaikkien itemlist
-listojen on oltava muistissa, joten huolehdi muistin kulutuksesta.