fnmatch
fnmatch - Unix文件名模式匹配
源代码:
Lib / fnmatch.py
该模块提供用于Unix shell风格的通配符,这是支持不
一样的正则表达式(这是中记录re
模块)。shell式通配符中使用的特殊字符是:
模式 | 含义 |
---|---|
* | 匹配一切 |
? | 匹配任何单个字符 |
seq | 匹配seq中的任何字符 |
!seq | 匹配不在seq中的任何字符 |
对于文字匹配,将元字符括在括号中。例如,'[?]'
匹配字符'?'
。
请注意,文件名分隔符('/'
在Unix上)对于这个模块并不
特别。请参阅模块glob
以获取路径名称扩展(glob
用于fnmatch()
匹配路径名段)。同样,以句点开头的文件名对于这个模块并不
是特别的,并且*
和?
模式匹配。
fnmatch.fnmatch(filename, pattern)
测试文件名
字符串是否匹配模式
字符串,返回True
或False
。如果操作系统不区分大小写,那么在执行比较之前,这两个参数将被标准化为所有较低或较大的情况。fnmatchcase()
可用于执行区分大小写的比较,而不管操作系统是否为标准。
这个例子将打印当前目录中所有扩展名为的文件名.txt
:
import fnmatch
import os
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*.txt'):
print file
fnmatch.fnmatchcase(filename, pattern)
测试文件名
是否匹配模式
,返回True
或False
; 比较区分大小写。
fnmatch.filter(names, pattern)
返回匹配模式
的名称
列表的子集。这是相同的,但更高效地实施。[n for n in names if fnmatch(n, pattern)]
2.2版本中的新功能。
fnmatch.translate(pattern)
将shell样式模式
转换为正则表达式以供使用re.match()
。
例:
>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate('*.txt')
>>> regex
'.*\\.txt\\Z(?ms)'
>>> reobj = re.compile(regex)
>>> reobj.match('foobar.txt')
<_sre.SRE_Match object at 0x...>
另请参阅
Module
glob
Unix shell风格的路径扩展。