On 15May2018 09:37, Travis Griggs <travisgri...@gmail.com> wrote:
I have a directory structure that might look something like:
Data
Current
A
B
C
Previous
A
X
In as simple/quick a step as possible, I want to rename Current as Previous
including the contents and wiping out the original such that it is now:
Data
Previous
A
B
C
I've tried something like:
from pathlib import Path
src = Path('Data/Current’)
dest = Path('Data/Previous’)
src.replace(dest)
The docs led me to hope this would work:
"If target points to an existing file or directory, it will be
unconditionally replaced.”
But it *does* appear to be conditional. I get a "Directory not empty"
exception. I guess I could recursively delete the ‘Previous' directory first.
Is that basically the only solution? Or is there a better way to achieve this?
When I do this and want speed I go:
1) rename Previous to a scratch name (eg .rmtmp-$$-Previous; the mkstemp
function will help pick a free name for you). Make sure it is in the same
directory i.e. rename blah/blah/Previous to blah/blah/.rmtmp-$$-Previous) -
avoids accidentally crossing filesystem boundaries.
2) rename Current to previous
3) remove the old previous (I do this asynchronously in shell scripts)
In fact I do this so often in the shell that I have a trite script called "rmr"
that does 1+3, and routinely type:
rmr Previous && mv Current Previous
Prompt back instantly, "rm" of the temp name proceeding siletnly in the
background.
Cheers,
Cameron Simpson <c...@cskk.id.au>
--
https://mail.python.org/mailman/listinfo/python-list