Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
allendowney
GitHub Repository: allendowney/cpython
Path: blob/main/Tools/freeze/bkfile.py
12 views
1
from builtins import open as _orig_open
2
3
def open(file, mode='r', bufsize=-1):
4
if 'w' not in mode:
5
return _orig_open(file, mode, bufsize)
6
import os
7
backup = file + '~'
8
try:
9
os.unlink(backup)
10
except OSError:
11
pass
12
try:
13
os.rename(file, backup)
14
except OSError:
15
return _orig_open(file, mode, bufsize)
16
f = _orig_open(file, mode, bufsize)
17
_orig_close = f.close
18
def close():
19
_orig_close()
20
import filecmp
21
if filecmp.cmp(backup, file, shallow=False):
22
import os
23
os.unlink(file)
24
os.rename(backup, file)
25
f.close = close
26
return f
27
28