Message 106601 - Python tracker (original) (raw)
Begin by removing the dest file is maybe not the safer approach :-) Here is a new try: begin by renaming the dest file to a new file.
use maybe a PRNG instead of a dummy counter or tempfile
def _create_old_filename(filename): old = filename + '.old' index = 2 while os.path.exists(old): old = filename + '-%s.old' % index index += 1 return old
if os.name in ('nt', 'ce'): def atomic_rename(src, dst): if os.path.exists(dst): old = _create_old_filename(dst) rename(dst, old) rename(src, dst) unlink(old) else: rename(src, dst) else: atomic_rename = os.rename
What can we do if "rename(src, dst)" fails?