【发布时间】:2017-09-18 14:09:52
【问题描述】:
filecmp.dircmp 用于比较两个文件夹。
它接受一个参数ignore,但它只精确匹配而不是通配符匹配。知道如何忽略模式吗?
【问题讨论】:
filecmp.dircmp 用于比较两个文件夹。
它接受一个参数ignore,但它只精确匹配而不是通配符匹配。知道如何忽略模式吗?
【问题讨论】:
您可以使用 glob https://docs.python.org/3/library/glob.html 扩展模式并将扩展的列表提供给忽略参数。
假设您有左侧文件夹和右侧文件夹,然后您想从比较中过滤掉所有 *.foo 和 *.bar,
import os
import glob
import filecmp
ignore_list = []
patterns_to_ignore = ['*.foo', '*.bar']
for pattern in patterns_to_ignore:
ignore_left = [os.path.split(expanded)[1] for expanded in glob.glob(os.path.join(left, pattern))]
ignore_right = [os.path.split(expanded)[1] for expanded in glob.glob(os.path.join(right, pattern))]
ignore_list.extend(ignore_left)
ignore_list.extend(ignore_right)
diff = filecmp.dircmp(left, right, ignore=ignore_list)
【讨论】: