11.8. fnmatch — Unix 文件名模式匹配
此模块提供了 Unix shell 风格的通配符,它们 并不 等同于正则表达式(关于后者的文档参见 模块)。 shell 风格通配符所使用的特殊字符如下:
对于字面值匹配,请将原字符用方括号括起来。 例如,'[?]'
将匹配字符 '?'
。
注意文件名分隔符 (Unix 上为 '/'
) 不是 此模块所特有的。 请参见 glob 模块了解文件名扩展 ( 使用 filter() 来匹配文件名的各个部分)。 类似地,以一个句点打头的文件名也不是此模块所特有的,可以通过 和 ?
模式来匹配。
fnmatch.fnmatch
(filename, pattern)
检测 filename 字符串是否匹配 pattern 字符串,返回 或 False。 两个形参都会使用 进行大小写正规化。 fnmatchcase() 可被用于执行大小写敏感的比较,无论这是否为所在操作系统的标准。
这个例子将打印当前目录下带有扩展名 .txt
的所有文件名:
fnmatch.fnmatchcase
(filename, pattern)
fnmatch.filter
(names, pattern)
返回 names 列表中匹配 pattern 的子集。 它等价于 [n for n in names if fnmatch(n, pattern)]
,但其实现更为高效。
(pattern)
返回 shell 风格 pattern 转换成的正则表达式以便用于 。
示例:
>>> import fnmatch, re
>>>
>>> regex
'(?s:.*\\.txt)\\Z'
<_sre.SRE_Match object; span=(0, 10), match='foobar.txt'>
参见
模块 glob
Unix shell 风格路径扩展。