python - 有没有办法使用 python 从目录比较中排除特定文件类型

标签 python directory

这是我所拥有的:

import filecmp
from filecmp import dircmp
def print_right_only(dcmp):
     for name in dcmp.right_only:
         print "%s not found in %s but found in %s" % (name, dcmp.left,
            dcmp.right)
     for sub_dcmp in dcmp.subdirs.values():
         print_right_only(sub_dcmp)

dcmp = dircmp('E:\GIS', 'J:\GIS') 
print_right_only(dcmp)

这完全按照需要工作。我希望能够从结果中过滤或排除 *.lock 文件。我确实看到了与 dircmp 相关的忽略函数,但无法让它返回任何结果。

最佳答案

dircompignore 不接受全局变量,只接受文字。

filecmp._filter 替换为:

from fnmatch import fnmatch
def _filter(flist, skip):
    return [item for item in flist 
                 if not any(fnmatch(item, pat) for pat in skip)]
filecmp._filter = _filter

在调用 dircmp 之前执行此操作,然后 dircmp(...,ignore=['*.lock']) 将按预期工作。

未经测试。

关于python - 有没有办法使用 python 从目录比较中排除特定文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846484/

相关文章:

java - 在 user.home 的另一个目录中创建一个目录?

python - 将目录复制到另一个目录中

python - 有人可以向我解释这个错误吗?

python - 带有 seaborn 的 Jointplot 多索引列

c++ - 在 C/C++ 代码中解析 python 脚本文件的最佳方法是什么

PHP 扫描目录和数组

python - Pandas,Wide_to_Long 正在创建额外的错误行和额外的错误列

python - 条件标记 matplotlib

emacs - 更改 .emacs 文件的位置

wordpress - 在 WordPress 中管理子目录的最佳做法是什么?