Est-ce la façon la plus propre d'écrire une liste dans un fichier, puisque writelines()
n'insère pas de caractères de nouvelle ligne ?
file.writelines(["%s\n" % item for item in list])
Il semble qu'il y ait un moyen standard...
Vous pouvez utiliser une boucle :
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
En Python 2, vous pouvez également utiliser la fonction
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
Si vous tenez à un appel de fonction unique, supprimez au moins les crochets []
, de sorte que les chaînes à imprimer soient fabriquées une par une (un genexp plutôt qu'un listcomp) -- aucune raison d'occuper toute la mémoire nécessaire pour matérialiser la liste entière des chaînes.
Qu'allez-vous faire avec ce fichier ? Ce fichier existe-t-il pour les humains, ou pour d'autres programmes ayant des exigences claires en matière d'interopérabilité ?
Si vous essayez simplement de sérialiser une liste sur le disque pour une utilisation ultérieure par la même application python, vous devriez [pickleer][1] la liste.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
Pour la relire :
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
La manière la plus simple est :
``lang-python outfile.write("\n" ;.join(itemlist))
Vous pouvez vous assurer que tous les éléments de la liste d'éléments sont des chaînes de caractères en utilisant une expression de générateur :
``lang-python
outfile.write("\n" ;.join(str(item) for item in itemlist))
Rappelez-vous que toutes les listes itemlist
doivent être en mémoire, donc, faites attention à la consommation de mémoire.