Source code for labgrid.util.atomic
import os
import tempfile
[docs]def atomic_replace(filename, data):
try:
with tempfile.NamedTemporaryFile(
mode='wb',
dir=os.path.dirname(filename),
delete=False) as f:
f.write(data)
f.flush()
os.fsync(f.fileno())
os.replace(f.name, filename)
finally:
try:
os.unlink(f.name)
except FileNotFoundError:
pass