← Все вопросы

Как записать список в файл построчно в Python?

Задан 32 месяца назад218 просмотров2 ответа
8

У меня есть список строк, и я хочу сохранить его в txt — каждый элемент на своей строке. Пробую f.write(my_list) — ошибка. Как записать список в файл, чтобы получился нормальный построчный текст?

2 ответа

12
✓ Принятый ответ — помог автору

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)

Два важных момента:

  1. Режим 'w' перезаписывает файл с нуля. Чтобы дописать в конец, используйте 'a'.
  2. Указывайте encoding='utf-8', иначе на русском тексте под Windows возможны проблемы с кодировкой.

Вариант с join обычно читабельнее и не оставляет лишней пустой строки в конце.

4

Если элементов очень много и собирать гигантскую строку через join не хочется, пишите в цикле:

with open('out.txt', 'w', encoding='utf-8') as f:
    for item in lines:
        f.write(f'{item}\n')

f-string тут заодно превратит число в строку, так что str() не нужен. Такой подход экономит память на огромных списках, потому что не держит весь текст целиком.

Ваш ответ

, чтобы ответить на вопрос.