从包含名为 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://stackoverflow.com/questions/1868714/