[issue8828] Atomic function to rename a file
STINNER Victor
report at bugs.python.org
Thu May 27 11:58:56 CEST 2010
STINNER Victor <victor.stinner at haypocalc.com> added the comment:
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?
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8828>
_______________________________________
More information about the Python-bugs-list
mailing list