Files
PYAS/PYAS_Storage.py
T
2026-10-09 12:12:42 +08:00

27 lines
716 B
Python

import json
import os
import tempfile
def atomic_write_json(path, data):
directory = os.path.dirname(os.path.abspath(path))
os.makedirs(directory, exist_ok=True)
descriptor, temporary_path = tempfile.mkstemp(prefix=".pyas-", suffix=".tmp", dir=directory)
try:
with os.fdopen(descriptor, "w", encoding="utf-8") as stream:
descriptor = None
json.dump(data, stream, indent=4, ensure_ascii=False)
stream.flush()
os.fsync(stream.fileno())
os.replace(temporary_path, path)
finally:
if descriptor is not None:
os.close(descriptor)
if os.path.exists(temporary_path):
os.unlink(temporary_path)