тгТихая грань
ОПЕРАЦИЯ · ЗАПИСЬ

Записать через временный файл

Подготовить результат в том же каталоге и опубликовать без перезаписи существующего имени.

Инструмент: Python 3 · риск: creates-output · проверено: 2026-02-21

Предварительные условия

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 каталога.

Обратимость

Исходные данные не меняются; созданный результат можно оставить отдельно.

Применимые форматы

plain-text json