Вопрос-Ответ

Writing a list to a file with Python, with newlines

Запись списка в файл с помощью Python, с переводом строк

Как мне записать список в файл? writelines() не вставляет символы новой строки, поэтому мне нужно сделать:

f.writelines([f"{line}\n" for line in lines])
Переведено автоматически
Ответ 1

Используйте цикл:

with open('your_file.txt', 'w') as f:
for line in lines:
f.write(f"{line}\n")

Для Python <3.6:

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

Для Python 2 также можно использовать:

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

Если вы заинтересованы в вызове одной функции, по крайней мере, снимите квадратные скобки [], чтобы выводимые строки создавались по одной за раз (genexp, а не listcomp) - нет причин занимать всю память, необходимую для материализации всего списка строк.

Ответ 2

Что вы собираетесь делать с файлом? Существует ли этот файл для пользователей или других программ с четкими требованиями к совместимости?

Если вы просто пытаетесь сериализовать список на диск для последующего использования тем же приложением Python, вам следует отредактировать список.

import pickle

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

Чтобы прочитать его обратно:

with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
Ответ 3

Проще всего:

with open("outfile", "w") as outfile:
outfile.write("\n".join(itemlist))

Чтобы убедиться, что все элементы в списке элементов являются строками, используйте выражение генератора:

with open("outfile", "w") as outfile:
outfile.write("\n".join(str(item) for item in itemlist))

Помните, что это itemlist занимает память, поэтому позаботьтесь о потреблении памяти.

Ответ 4

Использование синтаксиса Python 3 и Python 2.6+:

with open(filepath, 'w') as file_handler:
for item in the_list:
file_handler.write("{}\n".format(item))

Это не зависит от платформы. Это также завершает последнюю строку символом перевода строки, что является лучшей практикой UNIX.

Начиная с Python 3.6, "{}\n".format(item) может быть заменен на f-строку: f"{item}\n".

python file list