Энциклопедия Python:write()
Метод write() используется для записи строки или байтов в файл в Python. Метод применяется к файловому объекту, который обычно создаётся функцией open().
Базовый синтаксис
file.write(data)
Метод записывает данные в файл и возвращает количество записанных символов в текстовом режиме или байтов в бинарном режиме.
Основные режимы использования
Запись строки в файл
with open('example.txt', 'w', encoding='utf-8') as file:
file.write('Привет, Python!')
Режим 'w' создаёт новый файл или полностью перезаписывает существующий файл.
Дозапись в конец файла
with open('log.txt', 'a', encoding='utf-8') as file:
file.write('Новая строка журнала\n')
Режим 'a' добавляет данные в конец файла, не удаляя уже существующее содержимое.
Запись нескольких строк
lines = [
'Первая строка\n',
'Вторая строка\n',
'Третья строка\n'
]
with open('lines.txt', 'w', encoding='utf-8') as file:
for line in lines:
file.write(line)
Для записи списка строк также можно использовать метод writelines().
Работа с переводом строки
Метод write() не добавляет перенос строки автоматически. Если каждая запись должна начинаться с новой строки, символ \n нужно добавлять вручную.
with open('names.txt', 'w', encoding='utf-8') as file:
file.write('Alice\n')
file.write('Bob\n')
file.write('Charlie\n')
Бинарная запись
В бинарном режиме метод write() принимает объект типа bytes.
data = b'Hello, binary file!'
with open('data.bin', 'wb') as file:
file.write(data)
Если файл открыт в бинарном режиме, строку нужно заранее преобразовать в байты.
text = 'Пример текста'
with open('text.bin', 'wb') as file:
file.write(text.encode('utf-8'))
Возвращаемое значение
Метод write() возвращает число записанных символов или байтов.
with open('result.txt', 'w', encoding='utf-8') as file:
count = file.write('Python')
print(count) # 6
Обработка ошибок
При записи в файл могут возникать ошибки: например, если нет прав на запись, указан неверный путь или файл открыт в режиме только для чтения.
try:
with open('example.txt', 'r', encoding='utf-8') as file:
file.write('Текст')
except io.UnsupportedOperation:
print('Файл открыт не в режиме записи')
Для такого примера нужно импортировать модуль io.
import io
Важные замечания
- Метод
write()записывает только строку в текстовом режиме и байты в бинарном режиме. - Перенос строки не добавляется автоматически.
- Режим
'w'перезаписывает файл. - Режим
'a'добавляет данные в конец файла. - Для текстовых файлов желательно явно указывать кодировку через
encoding='utf-8'. - Для безопасной работы с файлами удобно использовать конструкцию
with, которая автоматически закрывает файл.
Область применения
- Запись текстовых файлов.
- Создание логов.
- Сохранение результатов вычислений.
- Экспорт данных.
- Запись бинарных файлов.
- Формирование простых отчётов.
Отличие от writelines()
Метод write() записывает одну строку или один объект bytes. Метод writelines() принимает последовательность строк и записывает их подряд.
lines = ['one\n', 'two\n', 'three\n']
with open('numbers.txt', 'w', encoding='utf-8') as file:
file.writelines(lines)
При использовании writelines() переносы строк также нужно добавлять вручную.
Заключение
Метод write() является основным инструментом для записи данных в файлы в Python. Он прост в использовании, но требует внимательности к режиму открытия файла, кодировке и символам переноса строки.
