9

Сохранение списка в файл с помощью Python с учетом переносов строк

16

Заголовок: Проблема записи списка в файл без символов новой строки

Тело вопроса:

Я пытаюсь записать список строк в файл, но столкнулся с проблемой. Функция writelines() не добавляет символы новой строки, и в результате все строки записываются в одну строку без разделений.

В данный момент я использую следующий код для исправления этой проблемы:

f.writelines([f"{line}\n" for line in lines])

Хотелось бы узнать, есть ли более эффективный способ записи списка строк в файл с добавлением символов новой строки. Заранее спасибо за помощь!

5 ответ(ов)

13

Вот пример, как записать строки из списка в файл с использованием цикла:

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

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

4

Более простой вариант кода:

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

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

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

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

0

Ваш код выглядит неплохо, но чтобы улучшить читаемость и сделать его более понятным, вот более подробный вариант ответа.

Если вы хотите сохранить список в файл и затем загрузить его обратно в Python, вы можете использовать стандартный модуль json. Вот пример:

import json

# Создаем список, который мы хотим сохранить
a = [1, 2, 3]

# Сохраняем список в файл 'test.txt'
with open('test.txt', 'w') as f:
    # Преобразуем список в строку формата JSON и записываем в файл
    f.write(json.dumps(a))

# Теперь читаем данные из файла обратно в объект списка Python
with open('test.txt', 'r') as f:
    # Загружаем строку из файла обратно в список
    a = json.loads(f.read())

В этом коде мы сначала записываем список a в файл в формате JSON. Затем мы открываем файл для чтения и используем json.loads(), чтобы преобразовать строку обратно в список.

Обратите внимание, что использование with open(...) — это хорошая практика, так как она автоматически закрывает файл после завершения работы с ним. Это поможет избежать возможных утечек памяти и ошибок, связанных с неправильным управлением файлами.

0

В Python 3 вы можете использовать print и * для распаковки аргументов. Например, если у вас есть список, и вы хотите записать его элементы в файл, вы можете сделать это следующим образом:

with open("fout.txt", "w") as fout:
    print(*my_list, sep="\n", file=fout)

В этом коде *my_list распаковывает все элементы списка my_list, передавая их в функцию print как отдельные аргументы. Параметр sep="\n" задает разделитель между элементами, в данном случае — новую строку. А параметр file=fout перенаправляет вывод в файл fout.txt. Таким образом, каждый элемент списка будет записан в файл на отдельной строке.

0

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

mylist = dir()
with open('filename.txt', 'w') as f:
    f.write(','.join(mylist))

В этом коде мы используем функцию dir(), чтобы получить список атрибутов текущего пространства имен и сохраняем его в переменной mylist. Затем, мы открываем файл filename.txt в режиме записи ('w') и используем метод join() для объединения элементов списка mylist в строку, разделенную запятыми. Эта строка затем записывается в файл. Не забудьте убедиться, что вы используете правильный путь к файлу, если он не находится в текущей директории.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь