使用pathlib破坏性地将一个目录重命名为另一个现有目录

Tra*_*ggs 5 python file-rename python-3.x

我有一个可能看起来像的目录结构

Data
    Current
        A
        B
        C
    Previous
        A
        X
Run Code Online (Sandbox Code Playgroud)

在尽可能简单/快速的步骤中,我想重命名CurrentPrevious包含内容并擦除原始内容,使其现在:

 Data
    Previous
        A
        B
        C
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的东西:

from pathlib import Path
src = Path('Data/Current')
dest = Path('Data/Previous')
src.replace(dest)
Run Code Online (Sandbox Code Playgroud)

文档让我希望这会起作用:

如果target指向现有文件或目录,则将无条件地替换它.

但它似乎确实是有条件的.我得到一个Directory not empty例外.我想我可以先递归删除Previous目录.这基本上是唯一的解决方案吗?或者有更好的方法来实现这一目标吗?

(我更喜欢pathlib,但如果os或者shutil是更好的锤子,我不反对他们)

(我在Linux上运行)

Olu*_*ule 0

dest继续 sehafoc 的评论,使用以下方式删除 (“Data/Previous”)的整个文件树后shutil

shutil.rmtree(dest)
Run Code Online (Sandbox Code Playgroud)

src将(“数据/当前”)重命名为dest.

src.rename(dest)
Run Code Online (Sandbox Code Playgroud)