Сообщить об ошибке.

Способы записи в открытый файл в Python

Запись информации в открытый файл

Как и при чтении файлов, файловые объекты имеют несколько методов, которые полезны для записи в файл.

fp.write(string):
Метод записывает в файл строку. "Строка" может быть сколь угодно большой и уже заранее разделена на подстроки escape-последовательностью новой строки '\n'. То есть этот метод позволяет писать в файл как построчно, так и все сразу.

Если необходимо записать большой массив данных, то лучше это делать небольшими порциями, по мере поступления данных.

Запишем список строк в объект файла, при этом в процессе записи будем на лету добавлять символ новой строки '\n' к каждому элементу списка строк.

>>> text = ['Строка №1', 'Строка №2', 'Строка №3', 'Строка №4', 'Строка №5']
# открываем файл на запись
>>> with open('text.txt', 'w') as fp:
...    # пишем построчно
...    for line in text:
...           # на лету добавляем 
...           # символ новой строки
...           fp.write(line + '\n')

Теперь запишем все сразу, для этого подготовим список строк, объединив список в строку при помощи метода строки str.join(), а в качестве разделителя строки укажем символ новой строки '\n'.

>>> text = ['Строка №1', 'Строка №2', 'Строка №3', 'Строка №4', 'Строка №5']
# объединим список строк в одну строку, в качестве символа
# разделителя используем символ новой строки `'\n'`
>>> write_string = '\n'.join(text)
# открываем файл на запись
>>> with open('text.txt', 'w') as fp:
...    # пишем в файл
...    fp.write(write_string)

Если выполнить примеры на своем компьютере, то можно посмотреть полученные файлы Они будут располагаться в корневой директории.


fp.writelines(sequence):

Метод записывает в файл последовательность, которая в качестве элементов содержит строки. Метод не добавляет автоматически разделители строк '\n'. Если они требуются, то добавляйте их вручную.

Этот метод предоставляется для удобства, чтобы во время записи в файл не итерироваться по списку строк, как показано в первом примере для метода записи в файл file.write() (смотрите выше).

Смотрим как работает метод:

# пишем как есть
>>> text = ['Строка №1', 'Строка №2', 'Строка №3', 'Строка №4', 'Строка №5']
# откроем файл на запись `fw` и сразу на чтение `fr`
>>> with open('text.txt', 'w') as fw, open('text.txt', 'r') as fr:
...     # сначала пишем в файл
...     fw.writelines(text)
...     fw.flush()
...     for line in fr:
...         print(line, end='')
... 
# 'Строка №1Строка №2Строка №3Строка №4Строка №5'

Теперь добавляем разделители строк '\n' к списку строк, а потом запишем его в файл и сразу же прочитаем, что бы увидеть что получилось.

# Добавляем разделители строк
>>> text = ['Строка №1', 'Строка №2', 'Строка №3', 'Строка №4', 'Строка №5']
# создадим новый список
>>> write_list = []
>>> for line in text:
...    # в конец каждого элемента списка 
...    # добавим символ новой строки `'\n'`
...    write_list.append(line + '\n')
# откроем файл на запись `fw` и сразу на чтение `fr`
>>> with open('text.txt', 'w') as fw, open('text.txt', 'r') as fr:
...     # сначала пишем в файл полученный список `write_list`
...     fw.writelines(write_list)
...     # сбрасываем буфер
...     fw.flush()
...     # теперь читаем записанный файл
...     for line in fr:
...         print(line, end='')
... 
# Строка №1
# Строка №2
# Строка №3
# Строка №4
# Строка №5