Python shutil copytree:使用ignore函数保留特定的文件类型

时间:2017-02-27 13:57:37

标签: python ignore copytree

我试图弄清楚如何将CAD图纸(" .dwg"," .dxf)从包含子文件夹的源目录复制到目标目录并维护原始目录和子文件夹结构。

  • 原始目录:H:\ Tanzania ... \ Bagamoyo_Single_line.dw​​g
  • 来源目录:H:\ CAD \ Tanzania ... \ Bagamoyo_Single_line.dw​​g

我在以下帖子中@martineau找到了以下答案:Python Factory Function

G_IO_PRI

更新时间:18:21。以下代码按预期工作,但我要忽略不包含任何include_patterns的文件夹(' .dwg',' 。 DXF&#39)

1 个答案:

答案 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
相关问题