Как выполнить атомарную замену файла?

#python #filesystems #rename #atomic #fwrite

#python #файловые системы #переименовать #атомарный #fwrite

Вопрос:

Какой рекомендуемый способ атомарной замены файла в Python?

т.Е., Если скрипт Python прерывается, происходит отключение питания и т. Д. Файлы не имеют высокой вероятности оказаться в несогласованном состоянии (половина записана на диск).

Предпочтительным является решение для платформ Linux / UNIX.

(Я знаю, что получение 100% атомарных операций может зависеть от вашей файловой системы, но, по крайней мере, снизить вероятность повреждения.)

Комментарии:

1. Ответ, вероятно, будет включать создание временных файлов (в том же разделе) и удаление существующего целевого объекта

2. Это не дубликат и имеет гораздо более простой ответ, чем вопрос, связанный с, пожалуйста, откройте снова.

Ответ №1:

Создайте новый файл и os.rename() поверх существующего файла. Это атомарно на большинстве платформ в большинстве условий.

Комментарии:

1. os.replace() является атомарным на ВСЕХ платформах в большинстве условий.