用Python复制目录内容到另一个目录

132 投票
4 回答
184339 浏览
提问于 2025-04-17 16:49

我有一个文件夹 /a/b/c,里面有一些文件和子文件夹。
我想把 /a/b/c 里的所有东西复制到 /x/y/z 这个文件夹里。我可以用什么 Python 方法来做到这一点呢?

我试过用 shutil.copytree("a/b/c", "/x/y/z"),但是 Python 试图创建 /x/y/z,结果出现了一个错误,提示“目录已存在”。

4 个回答

1
from subprocess import call

def cp_dir(source, target):
    call(['cp', '-a', source, target]) # Linux

cp_dir('/a/b/c/', '/x/y/z/')

对我来说是有效的。基本上,它执行的是一个叫cp的命令。

4

你还可以使用glob2这个工具来递归地收集所有的路径(使用**这个符号来表示子文件夹),然后再用shutil.copyfile来复制文件,同时保存这些路径。

glob2的链接在这里:https://code.activestate.com/pypm/glob2/

231

我找到了一段可以正常工作的代码,它是标准库的一部分:

from distutils.dir_util import copy_tree

# copy subdirectory example
from_directory = "/a/b/c"
to_directory = "/x/y/z"

copy_tree(from_directory, to_directory)

参考资料:

撰写回答