Сохранение строк в файлы средствами Python: метод write

Раздел: Работа с файлами -> Работа с файлами

Основное решение: метод write

Для записи текста в файл Python предоставляет метод write. Основной способ - открыть файл в режиме 'w' (запись), вызвать write и закрыть. Использование контекстного менеджера with гарантирует закрытие файла даже при ошибках.

with open('example.txt', 'w', encoding='utf-8') as f:
    f.write('Привет, Python!')

путь к path python (путь к python (переменная path))

После выполнения в текущей директории появится файл example.txt с содержимым "Привет, Python!".

Возможные проблемы:

  • Ошибка FileNotFoundError - если путь к папке не существует. Решение: предварительно создать папку или использовать os.makedirs.
  • Ошибка PermissionError - недостаточно прав для записи. Решение: проверить права доступа.
  • Ошибка UnicodeEncodeError - если символы не поддерживаются кодировкой. Решение: указать encoding='utf-8'.

Как записать несколько строк без ручного добавления переносов?

Метод writelines принимает итерируемый объект и записывает каждый элемент. Важно: метод не добавляет разделители строк, поэтому их нужно включать в сами строки.

lines = ['Первая строка\n', 'Вторая строка\n']
with open('lines.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)

Python pathlib path (использование pathlib в python)

Если забыть \n, строки запишутся подряд без переносов. Рекомендуется использовать списочные выражения для добавления переносов: lines = [line + '\n' for line in data].

Как записать текст с указанием кодировки?

Параметр encoding задает кодировку файла. По умолчанию используется системная, что может вызвать проблемы с кириллицей.

with open('cyrillic.txt', 'w', encoding='utf-8') as f:
    f.write('Текст на русском языке')

Path python 2 (путь к python 2)

Если не указать encoding='utf-8', на Windows может использоваться cp1251, что приведет к неправильному отображению.

Как дописать данные в конец существующего файла?

Режим 'a' (append) открывает файл для добавления в конец, не перезаписывая его.

with open('log.txt', 'a', encoding='utf-8') as f:
    f.write('Новая запись\n')

Если файл не существует, режим 'a' создаст его. Для строгой проверки существования используйте 'x'.

- Python find directory (поиск директории)
- Python текущая директория (получение текущей рабочей директории в python)
- File does not exist python (проверка существования файла)

Расширенные примеры

Запись с форматированием через f-строки

Пример
name = 'Алиса'
age = 30
with open('person.txt', 'w', encoding='utf-8') as f:
    f.write(f'Имя: {name}, Возраст: {age}\n')
Содержимое файла person.txt: "Имя: Алиса, Возраст: 30"

Запись в бинарном режиме

Пример
data = b'Бинарные данные \x00\x01'
with open('binary.bin', 'wb') as f:
    f.write(data)
Файл binary.bin содержит байты: 42 69 6e 61 72 79 20 64 61 74 61 20 00 01 (в шестнадцатеричном виде).

Запись JSON с отступами

Пример
import json
data = {'name': 'Боб', 'age': 25, 'city': 'Москва'}
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)
Содержимое data.json:
{
  "name": "Боб",
  "age": 25,
  "city": "Москва"
}

Запись в CSV с помощью модуля csv

Пример
import csv
rows = [['Имя', 'Возраст'], ['Алиса', 30], ['Боб', 25]]
with open('people.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerows(rows)
Содержимое people.csv:
Имя,Возраст
Алиса,30
Боб,25

Запись текста в файл Python - comments

En
метод write python (python)