使用Python复制目录结构

4

能否使用Python编写脚本来执行以下操作:

Basic Operation : copy files with the proper directory structure.

给定一个文件名列表,程序应该扫描目录,并将目录中的文件复制到目标目录中保留文件夹结构。这类似于Eclipse中“通过创建适当的子文件夹导出文件系统”的功能。


请标记正确答案,这对其他观众也会有帮助。 - Ganesh
2个回答

7

6

更新:我刚刚看到问题是要复制目录结构和文件。我的下面的答案仅适用于仅包含目录结构且仅适用于python3,正如yossi所指出的那样。我仍然想保留我的答案,并希望不会被downvote。

我发现silviubogan的受欢迎答案在解决这个问题(我也遇到了几次)方面非常有帮助,所以这是我的方法:

shutil.copytree()接受一个copy_function,所以你只需要一个不复制文件的复制函数。这里是稍微改变过的shutil.copy2()的版本:

def copy_dir(src, dst, *, follow_sym=True):
    if os.path.isdir(dst):
        dst = os.path.join(dst, os.path.basename(src))
    if os.path.isdir(src):
        shutil.copyfile(src, dst, follow_symlinks=follow_sym)
        shutil.copystat(src, dst, follow_symlinks=follow_sym)
    return dst

然后调用shutil.copytree(source, target, copy_function=copy_dir)函数,它会在target路径下按照source文件夹的结构创建相同的文件夹和子文件夹。


1
shutil.copytree复制函数仅在Python 3上可用。 - yossi
我刚意识到我甚至没有正确回答这个问题。当我写我的答案时,我只读了问题,以便只复制dir结构而不是文件,但实际上,问题是关于文件和文件夹的。 - Malhelo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接