Εγγραφή μιας λίστας σε ένα αρχείο με την Python

Είναι αυτός ο καθαρότερος τρόπος για να γράψετε μια λίστα σε ένα αρχείο, αφού η 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) -- δεν υπάρχει λόγος να καταλαμβάνετε όλη τη μνήμη που απαιτείται για να υλοποιήσετε ολόκληρη τη λίστα των συμβολοσειρών.

Σχόλια (6)

Τι θα κάνετε με το αρχείο; Υπάρχει αυτό το αρχείο για ανθρώπους ή για άλλα προγράμματα με σαφείς απαιτήσεις διαλειτουργικότητας;

Εάν προσπαθείτε απλώς να σειριοποιήσετε μια λίστα στο δίσκο για μεταγενέστερη χρήση από την ίδια εφαρμογή python, θα πρέπει να pickleing τη λίστα.

import pickle

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

Για να την διαβάσετε πίσω:

with open ('outfile', 'rb') as fp:
    itemlist = pickle.load(fp)
Σχόλια (7)

Ο απλούστερος τρόπος είναι:

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

Θα μπορούσατε να διασφαλίσετε ότι όλα τα στοιχεία στη λίστα item list είναι συμβολοσειρές χρησιμοποιώντας μια έκφραση γεννήτριας:

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

Να θυμάστε ότι όλες οι λίστες itemlist πρέπει να βρίσκονται στη μνήμη, οπότε προσέξτε την κατανάλωση μνήμης.

Σχόλια (10)