Home | History | Annotate | Download | only in freeze
      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