ОПЕРАЦИЯ · ЗАПИСЬ
Записать через временный файл
Подготовить результат в том же каталоге и опубликовать без перезаписи существующего имени.
Предварительные условия
Python 3, POSIX, локальная ФС с hard link; output.txt ещё не существует.
Команда
python3 - <<'PY'
import os, tempfile
from pathlib import Path
fd, name = tempfile.mkstemp(prefix=".write-", dir=".")
try:
with os.fdopen(fd, "w", encoding="utf-8", newline="\n") as f:
f.write("Сосна\n")
f.flush()
os.fsync(f.fileno())
os.link(name, "output.txt")
finally:
Path(name).unlink(missing_ok=True)
PYОбъяснение аргументов
mkstemp создаёт уникальное имя; link завершается ошибкой, если output.txt уже есть. unlink удаляет только созданный временный файл.
Ожидаемый результат
Полный output.txt или ошибка без изменения прежнего output.txt.
Проверка
Прочитайте output.txt и сравните с ожидаемой строкой.
Распространённые ошибки
- Использовать /tmp на другом томе; забыть fsync до публикации. Для crash durability нужен fsync каталога.
Обратимость
Исходные данные не меняются; созданный результат можно оставить отдельно.