[Python-ideas] Implementation of shutil.move
David Townshend
aquavitae69 at gmail.com
Mon Aug 15 22:15:05 CEST 2011
On Mon, Aug 15, 2011 at 7:24 PM, Guido van Rossum <guido at python.org> wrote:
> I know I'm late to the party, but I'm surprised that the existing
> behavior of move() is considered problematic. It carefully mimics the
> default behavior of the Unix "mv" command.
>
But "mv" does allow the "-i" (interactive) and "-n" (no-clobber) arguments,
which move() doesn't.
> Doing a move or rename atomically with the provision that it fails
> reliably when the target exists might be useful in some cases, but it
> seems to be more related to filesystem-based locking, which is known
> to be hard in a cross-platform way. (It also seems that some folks on
> the thread have ignored Windows in their use of the term
> "cross-platform".)
That's certainly what I've found in trying to do it! But it seems that it
should be possible on most systems, just each in a different way. On
windows, it should be as easy as trying os.open(file, os.O_EXEC|os.O_CREAT)
first since windows appears to lock a file to a process when its opened.
Linux ext file systems (arguably the most common) support an immutable
attribute, also effectively locking the file. I think that reiserFS and XFS
both has similar features. Unfortunately I have no experience with OSX or
HPFS so I'm not sure how it would work on a Mac.
This is quite a lot to implement though, so whether its worth it is another
matter... especially since it would be far easier (although slower) to just
copy/remove if it really is a problem.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20110815/c5575dd2/attachment.html>
More information about the Python-ideas
mailing list