从包含名为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”之后?)还是有更简单/更好的方法?
在atzz对上述函数总是试图将文件从源复制到目的地的函数的回答上有了一些小小的改进。
在我上面的实现中
我正在使用上面的函数和scons构建。这对我帮助很大,因为每次编译时,我可能不需要复制整个文件集。。但只有修改过的文件。
这是标准库的一部分解决方案。
看这个类似的问题。
Copy directory contents into a directory with python
标准
shutil.copytree
的这种限制似乎是任意的,令人讨厌。解决方法:请注意,它与标准的copytree并不完全一致:
symlinks
和ignore
参数shutil.Error
的根级别的错误shutil.Error
,而不是尝试复制其他子树并提升单个组合的shutil.Error
。相关问题 更多 >
编程相关推荐