shutil
已包含函数
ignore_pattern
,所以你不必自己提供。直接从
documentation
:
from shutil import copytree, ignore_patterns
copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
这将复制所有内容,除了
.pyc
文件和文件或
名称以开头的目录
tmp.
要解释发生了什么有点棘手(而且不是绝对必要的):
ignore_patterns
返回函数
_ignore_patterns
作为它的返回值,这个函数被填充到
copytree
作为参数,以及
复制树
根据需要调用此函数,因此您不必知道或关心如何调用此函数
_忽略模式
. 它只是意味着您可以排除某些不需要的cruft文件(例如
*.pyc
)不会被复制。函数的名称
_忽略模式
以下划线开头表示此函数是一个可以忽略的实现细节。
复制树
期望文件夹
destination
还不存在。这个文件夹和它的子文件夹已经存在,这不是问题。
复制树
开始工作,
复制树
知道怎么处理。
现在
include_patterns
是为了做相反的事情:忽略所有未明确包含的内容。但它的工作方式是一样的:你只要调用它,它就会在引擎盖下返回一个函数,然后
coptytree
知道如何处理该函数:
copytree(source, destination, ignore=include_patterns('*.dwg', '*.dxf'))