Ответы на этой странице довольно старые, теперь есть библиотеки, которые делают это за вас.
В частности, safer
— это библиотека, предназначенная для предотвращения ошибки программиста, приводящей к повреждению файлов, соединений сокетов или обобщенных потоков. Он довольно гибкий и, среди прочего, имеет возможность использовать либо память, либо временные файлы, вы даже можете сохранить временные файлы на случай сбоя.
Их пример - это то, что вам нужно:
# dangerous
with open(filename, 'w') as fp:
json.dump(data, fp)
# If an exception is raised, the file is empty or partly written
# safer
with safer.open(filename, 'w') as fp:
json.dump(data, fp)
# If an exception is raised, the file is unchanged.
Это в PyPI, просто установите его с помощью pip install --user safer
или получите последнюю версию на https://github.com/rec/safer< /а>
person
Eric
schedule
17.08.2020