8
votes

What's the recommended way to replace a file atomically in Python?

i.e. if the Python script is interrupted, there is a power outage etc. files do not have a high probability of ending up in an inconsistent state (half written to the disk).

A solution for Linux/UNIX platforms is preferred.

(I know getting 100% atomic operations might depend on your file system, but at least make the chances for the corruption low.)

1
The answer would probably involve creating temporary files (on the same partition) and removing the existing target too - Mikko Ohtamaa

1 Answers

14
votes

Create a new file and os.rename() it over the existing file. This is atomic on most platforms under most conditions.