我试图弄清楚如何将CAD图纸(" .dwg"," .dxf)从包含子文件夹的源目录复制到目标目录并维护原始目录和子文件夹结构。
我在以下帖子中@martineau找到了以下答案:Python Factory Function
G_IO_PRI
更新时间:18:21。以下代码按预期工作,但我要忽略不包含任何include_patterns的文件夹(' .dwg',' 。 DXF&#39)
答案 0 :(得分:15)
shutil
已包含ignore_pattern
功能,因此您无需提供自己的功能。直接从documentation:
from shutil import copytree, ignore_patterns copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
这将复制除
开头的目录.pyc
个文件和文件以外的所有内容 名称以tmp.
解释发生了什么有点棘手(并非严格必要):ignore_patterns
返回一个函数_ignore_patterns
作为其返回值,此函数被填入{ {1}}作为参数,copytree
根据需要调用此函数,因此您不必知道或关心如何调用此函数copytree
。它只是意味着您可以排除某些不需要的cruft文件(如_ignore_patterns
)被复制。函数*.pyc
的名称以下划线开头的事实暗示该函数是您可能忽略的实现细节。
_ignore_patterns
预计文件夹copytree
尚未存在。这个文件夹及其子文件夹在destination
开始工作后出现并不是问题,copytree
知道如何处理它。
现在编写copytree
来反过来:忽略未明确包含的所有内容。但它的工作原理相同:你只需要调用它,它会在引擎盖下返回一个函数,include_patterns
知道如何处理该函数:
coptytree