equal
deleted
inserted
replaced
614 |
614 |
615 def rename(src, dst): |
615 def rename(src, dst): |
616 """forcibly rename a file""" |
616 """forcibly rename a file""" |
617 try: |
617 try: |
618 os.rename(src, dst) |
618 os.rename(src, dst) |
619 except OSError, err: |
619 except OSError, err: # FIXME: check err (EEXIST ?) |
620 # on windows, rename to existing file is not allowed, so we |
620 # on windows, rename to existing file is not allowed, so we |
621 # must delete destination first. but if file is open, unlink |
621 # must delete destination first. but if file is open, unlink |
622 # schedules it for delete but does not delete it. rename |
622 # schedules it for delete but does not delete it. rename |
623 # happens immediately even for open files, so we create |
623 # happens immediately even for open files, so we create |
624 # temporary file, delete it, rename destination to that name, |
624 # temporary file, delete it, rename destination to that name, |