Een lijst naar een bestand schrijven met Python

Is dit de schoonste manier om een lijst naar een bestand te schrijven, omdat writelines() geen newline-tekens invoegt?

file.writelines(["%s\n" % item  for item in list])

Het lijkt erop dat er een standaard manier zou zijn...

Oplossing

Je kunt een lus gebruiken:

with open('your_file.txt', 'w') as f:
    for item in my_list:
        f.write("%s\n" % item)

In Python 2, kunt u ook gebruik maken van

with open('your_file.txt', 'w') as f:
    for item in my_list:
        print >> f, item

Als je'een enkele functie wilt aanroepen, verwijder dan op zijn minst de vierkante haken [], zodat de af te drukken strings één voor één worden gemaakt (een genexp in plaats van een listcomp) -- geen reden om al het geheugen in beslag te nemen dat nodig is om de hele lijst met strings te materialiseren.

Commentaren (6)

Wat ga je met het bestand doen? Bestaat dit bestand voor mensen, of andere programma's met duidelijke interoperabiliteitseisen?

Als je alleen maar probeert een lijst naar schijf te serialiseren voor later gebruik door dezelfde python app, zou je de lijst moeten pickleing.

import pickle

with open('outfile', 'wb') as fp:
    pickle.dump(itemlist, fp)

Om het terug te lezen:

with open ('outfile', 'rb') as fp:
    itemlist = pickle.load(fp)
Commentaren (7)

De eenvoudigste manier is:

outfile.write("\n".join(itemlist))

Je zou ervoor kunnen zorgen dat alle items in de itemlijst strings zijn met behulp van een generator expressie:

outfile.write("\n".join(str(item) for item in itemlijst))

Onthoud dat alle itemlist lijsten in het geheugen moeten staan, dus, let op het geheugen gebruik.

Commentaren (10)