Writing a list to a file with Python, with newlines
Запись списка в файл с помощью Python, с переводом строк
Как мне записать список в файл? writelines() не вставляет символы новой строки, поэтому мне нужно сделать:
f.writelines([f"{line}\n"for line in lines])
Переведено автоматически
Ответ 1
Используйте цикл:
withopen('your_file.txt', 'w') as f: for line in lines: f.write(f"{line}\n")
Для Python <3.6:
withopen('your_file.txt', 'w') as f: for line in lines: f.write("%s\n" % line)
Для Python 2 также можно использовать:
withopen('your_file.txt', 'w') as f: for line in lines: print >> f, line
Если вы заинтересованы в вызове одной функции, по крайней мере, снимите квадратные скобки [], чтобы выводимые строки создавались по одной за раз (genexp, а не listcomp) - нет причин занимать всю память, необходимую для материализации всего списка строк.
Ответ 2
Что вы собираетесь делать с файлом? Существует ли этот файл для пользователей или других программ с четкими требованиями к совместимости?
Если вы просто пытаетесь сериализовать список на диск для последующего использования тем же приложением Python, вам следует отредактировать список.
import pickle
withopen('outfile', 'wb') as fp: pickle.dump(itemlist, fp)
Чтобы прочитать его обратно:
withopen ('outfile', 'rb') as fp: itemlist = pickle.load(fp)
Ответ 3
Проще всего:
withopen("outfile", "w") as outfile: outfile.write("\n".join(itemlist))
Чтобы убедиться, что все элементы в списке элементов являются строками, используйте выражение генератора:
withopen("outfile", "w") as outfile: outfile.write("\n".join(str(item) for item in itemlist))
Помните, что это itemlist занимает память, поэтому позаботьтесь о потреблении памяти.
Ответ 4
Использование синтаксиса Python 3 и Python 2.6+:
withopen(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".