Как и при чтении файлов, файловые объекты имеют несколько методов, которые полезны для записи в файл.
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)
Если выполнить примеры на своем компьютере, то можно посмотреть полученные файлы Они будут располагаться в корневой директории.
Метод записывает в файл последовательность, которая в качестве элементов содержит строки. Метод не добавляет автоматически разделители строк '\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