Python - 创建一个包含父目录中所有目录和文件的子目录

Python - Create a subdirectory contains all directories and files in the parent directory

我想创建一个包含父目录中所有目录和文件的子目录。

例如: 存在父目录及其子目录和文件。

/parent
    /parent/child1
        /parent/child1/a.txt
        /parent/child1/b.txt
    /parent/child2
        /parent/child2/child2-1
            /parent/child2/child2-1/c.txt
        /parent/child2/child2/d.txt
    /parent/e.txt

我的目标: 创建一个名为“new”的子目录,其中包含父目录中的所有目录和文件。:

/parent
    /parent/new
        /parent/new/child1
            /parent/new/child1/a.txt
            /parent/new/child1/b.txt
        /parent/new/child2
            /parent/new/child2/child2-1
                /parent/new/child2/child2-1/c.txt
            /parent/new/child2/child2/d.txt
        /parent/new/e.txt

有没有Pythonic的方法可以满足我的需求?

谢谢!

shutil.copytree 是将目录树递归复制到新位置的常用方法,它具有是否在现有目录上出错、遵循符号链接等的选项。

然而,复杂的是你的目的地在源的 内部 ,这意味着任何递归方法最终都可能从 re-copy 新创建的树开始来源的一部分,无穷无尽。

最安全的管理方法是将您感兴趣的目录复制到它外部的某个临时目录,然后从该中间位置复制到目标:

import tempfile, shutil
with tempfile.TemporaryDirectory() as temp:
    temp_new = temp + '/new'
    shutil.copytree('..', temp_new)
    shutil.copytree(temp_new, 'new')