Перейти к содержанию

Энциклопедия Python:write()

Материал из Викижурнал
Энциклопедия 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. Он прост в использовании, но требует внимательности к режиму открытия файла, кодировке и символам переноса строки.

Другие страницы о Python