Είναι αυτός ο καθαρότερος τρόπος για να γράψετε μια λίστα σε ένα αρχείο, αφού η writelines()
δεν εισάγει χαρακτήρες νέας γραμμής;
file.writelines(["%s\n" % item for item in list])
Φαίνεται ότι θα υπήρχε ένας τυπικός τρόπος...
Μπορείτε να χρησιμοποιήσετε έναν βρόχο:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
Στην Python 2, μπορείτε επίσης να χρησιμοποιήσετε
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
Αν είστε πρόθυμοι για μια απλή κλήση συνάρτησης, τουλάχιστον αφαιρέστε τις αγκύλες []
, έτσι ώστε οι συμβολοσειρές που θα εκτυπωθούν να δημιουργηθούν μία μία (ένα genexp αντί για ένα listcomp) -- δεν υπάρχει λόγος να καταλαμβάνετε όλη τη μνήμη που απαιτείται για να υλοποιήσετε ολόκληρη τη λίστα των συμβολοσειρών.
Τι θα κάνετε με το αρχείο; Υπάρχει αυτό το αρχείο για ανθρώπους ή για άλλα προγράμματα με σαφείς απαιτήσεις διαλειτουργικότητας;
Εάν προσπαθείτε απλώς να σειριοποιήσετε μια λίστα στο δίσκο για μεταγενέστερη χρήση από την ίδια εφαρμογή python, θα πρέπει να pickleing τη λίστα.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
Για να την διαβάσετε πίσω:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
Ο απλούστερος τρόπος είναι:
outfile.write("\n".join(itemlist))
Θα μπορούσατε να διασφαλίσετε ότι όλα τα στοιχεία στη λίστα item list είναι συμβολοσειρές χρησιμοποιώντας μια έκφραση γεννήτριας:
outfile.write("\n".join(str(item) for item in itemlist))
Να θυμάστε ότι όλες οι λίστες itemlist
πρέπει να βρίσκονται στη μνήμη, οπότε προσέξτε την κατανάλωση μνήμης.