Сохранение строк в файлы средствами 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'.
Расширенные примеры
Запись с форматированием через 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