python - 如何使用 Python 将整个文件目录复制到现有目录中?

从包含名为 bar 的目录(包含一个或多个文件)和一个名为 baz 的目录(也包含一个或多个文件)的目录中运行以下代码.确保没有名为 foo 的目录。

import shutil
shutil.copytree('bar', 'foo')
shutil.copytree('baz', 'foo')

它会失败:

$ python copytree_test.py 
Traceback (most recent call last):
  File "copytree_test.py", line 5, in <module>
    shutil.copytree('baz', 'foo')
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/shutil.py", line 110, in copytree
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.py", line 172, in makedirs
OSError: [Errno 17] File exists: 'foo'

我希望它的工作方式与我输入时一样:

$ mkdir foo
$ cp bar/* foo/
$ cp baz/* foo/

我是否需要使用 shutil.copy()baz 中的每个文件复制到 foo 中? (在我已经使用 shutil.copytree() 将 'bar' 的内容复制到 'foo' 之后?)或者有更简单/更好的方法吗?

最佳答案

这是标准库中的一个解决方案:

from distutils.dir_util import copy_tree
copy_tree("/a/b/c", "/x/y/z")

查看这个类似的问题。

Copy directory contents into a directory with python

  • 引用 - https://docs.python.org/3/distutils/apiref.html#distutils.dir_util.copy_tree

https://stackoverflow.com/questions/1868714/

相关文章:

python - 如何使用 brew 安装的 Python 作为默认 Python?

linux - 如何将多行输出连接到一行?

python - 解释 Python 入口点?

windows - Microsoft Windows 的终端多路复用器 - GNU Screen

linux - 如何清空 ("truncate")Linux上已经存在并以某种方式受到保护的文件?

python - 使用 setup.py 包含非 Python 文件

linux - 使用命令行在启动后重定向进程的 STDERR/STDOUT?

python - 何时以及为什么应该使用命名元组而不是字典?

python - "this"模块的源代码是做什么的?

linux - 如何在文件中搜索多行模式?