| from builtins import open as _orig_open | 
 |  | 
 | def open(file, mode='r', bufsize=-1): | 
 |     if 'w' not in mode: | 
 |         return _orig_open(file, mode, bufsize) | 
 |     import os | 
 |     backup = file + '~' | 
 |     try: | 
 |         os.unlink(backup) | 
 |     except OSError: | 
 |         pass | 
 |     try: | 
 |         os.rename(file, backup) | 
 |     except OSError: | 
 |         return _orig_open(file, mode, bufsize) | 
 |     f = _orig_open(file, mode, bufsize) | 
 |     _orig_close = f.close | 
 |     def close(): | 
 |         _orig_close() | 
 |         import filecmp | 
 |         if filecmp.cmp(backup, file, shallow=False): | 
 |             import os | 
 |             os.unlink(file) | 
 |             os.rename(backup, file) | 
 |     f.close = close | 
 |     return f |