Запись в текстовый файл
Уроки курсаЗапись в текстовый файл
Дозапись в действии: режим 'a' и накопление данных
Режим 'a' уже введён, и понятно, что он добавляет данные в конец. Но возникает закономерный вопрос: как Python знает, где именно находится этот конец, если файл закрывался и открывался заново?
Рассмотрим простой случай — два независимых открытия:
# Первый запуск программы
with open('log.txt', 'a', encoding='utf-8') as f:
f.write('10:00 — программа запущена\n')
# ... время прошло, файл закрыт ...
# Второй запуск программы
with open('log.txt', 'a', encoding='utf-8') as f:
f.write('10:15 — пользователь открыл меню\n')
Ответ — на уровне операционной системы. При каждом открытии в режиме 'a' ОС сама находит текущий конец файла и ставит курсор записи туда. Python не читает файл, не считает байты и не запоминает смещение между запусками — это делает ОС при каждом обращении заново.
Из этого следует важное практическое свойство: режим 'a' работает корректно независимо от того, сколько раз файл открывался и закрывался, из одного места кода или из разных. Каждое открытие — это независимый запрос к ОС найти конец файла. Именно поэтому 'a' надёжен для любого сценария накопления данных — от простого цикла до нескольких скриптов, пишущих в один файл по очереди.
