¿Es ésta la forma más limpia de escribir una lista en un archivo, ya que writelines()
no inserta caracteres de nueva línea?
file.writelines(["%s\n" % item for item in list])
Parece que habría una forma estándar...
Puedes utilizar un bucle:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
En Python 2, también puedes usar
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
Si quieres hacer una sola llamada a la función, al menos quita los corchetes []
, para que las cadenas a imprimir se hagan de una en una (un genexp en lugar de un listcomp) -- no hay razón para ocupar toda la memoria necesaria para materializar toda la lista de cadenas.
¿Qué va a hacer con el archivo? ¿Existe este archivo para los humanos, u otros programas con claros requisitos de interoperabilidad?
Si sólo estás tratando de serializar una lista en el disco para su posterior uso por la misma aplicación de python, deberías estar pickleando la lista.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
Para leerla de nuevo:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
La forma más sencilla es:
``lang-python outfile.write("|n".join(itemlist))
Puedes asegurarte de que todos los elementos de la lista de elementos son cadenas utilizando una expresión generadora:
``lang-python
outfile.write("|n".join(str(item) for item in itemlist))
Recuerda que toda la lista de itemlist
debe estar en memoria, así que ten cuidado con el consumo de memoria.