Как записать список в файл построчно в Python?
У меня есть список строк, и я хочу сохранить его в txt — каждый элемент на своей строке. Пробую f.write(my_list) — ошибка. Как записать список в файл, чтобы получился нормальный построчный текст?
2 ответа
write() принимает только строку, а не список — отсюда ошибка TypeError. Самый чистый способ — собрать всё в одну строку через '\n'.join(...):
lines = ['яблоко', 'банан', 'вишня']
with open('out.txt', 'w', encoding='utf-8') as f:
f.write('\n'.join(lines))
Если в списке не строки, а числа, их сначала надо превратить в строки:
nums = [1, 2, 3]
f.write('\n'.join(str(x) for x in nums))
Альтернатива — writelines(), но она не добавляет переводы строк сама, поэтому их надо подставить вручную:
f.writelines(line + '\n' for line in lines)
Два важных момента:
- Режим
'w'перезаписывает файл с нуля. Чтобы дописать в конец, используйте'a'. - Указывайте
encoding='utf-8', иначе на русском тексте под Windows возможны проблемы с кодировкой.
Вариант с join обычно читабельнее и не оставляет лишней пустой строки в конце.
Если элементов очень много и собирать гигантскую строку через join не хочется, пишите в цикле:
with open('out.txt', 'w', encoding='utf-8') as f:
for item in lines:
f.write(f'{item}\n')
f-string тут заодно превратит число в строку, так что str() не нужен. Такой подход экономит память на огромных списках, потому что не держит весь текст целиком.