Delete temp file used for atomic writes even if renaming fails

This commit is contained in:
Kovid Goyal 2022-03-09 07:54:44 +05:30
parent 007099dd60
commit 0012b7cd64
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -367,9 +367,13 @@ def commit_data(file_path, data):
from calibre.utils.filenames import atomic_rename
bdir = os.path.dirname(file_path)
os.makedirs(bdir, exist_ok=True, mode=CONFIG_DIR_MODE)
with tempfile.NamedTemporaryFile(dir=bdir, delete=False) as f:
f.write(data)
atomic_rename(f.name, file_path)
try:
with tempfile.NamedTemporaryFile(dir=bdir, delete=False) as f:
f.write(data)
atomic_rename(f.name, file_path)
finally:
with suppress(FileNotFoundError, NameError):
os.remove(f.name)
class Config(ConfigInterface):