【发布时间】:2014-10-03 11:22:07
【问题描述】:
我需要列出当前目录 (.) 中的所有文件(包括所有子目录),并排除一些文件作为 .gitignore 的工作方式 (http://git-scm.com/docs/gitignore)
使用 fnmatch (https://docs.python.org/2/library/fnmatch.html) 我将能够使用模式“过滤”文件
ignore_files = ['*.jpg', 'foo/', 'bar/hello*']
matches = []
for root, dirnames, filenames in os.walk('.'):
for filename in fnmatch.filter(filenames, '*'):
matches.append(os.path.join(root, filename))
如何“过滤”并获取与“ignore_files”中的一个或多个元素不匹配的所有文件?
谢谢!
【问题讨论】:
-
我不需要所有的规范,只需要从文件列表中排除一些使用模式的文件。
-
你标记这个正则表达式有什么原因吗?这些显然是代码中的全局样式模式,而不是正则表达式。虽然您可以将它们转换为正则表达式(使用
fnmatch.translate),但您有理由相信您可能需要这样做吗?如果是这样,这个原因应该是你的问题。
标签: python pattern-matching gitignore glob fnmatch