在线文档教程

fnmatch

fnmatch - Unix文件名模式匹配

源代码: Lib / fnmatch.py

该模块提供用于Unix shell风格的通配符,这是支持一样的正则表达式(这是中记录re模块)。shell式通配符中使用的特殊字符是:

模式含义
*匹配一切
?匹配任何单个字符
seq匹配seq中的任何字符
!seq匹配不在seq中的任何字符

对于文字匹配,将元字符括在括号中。例如,'[?]'匹配字符'?'

请注意,文件名分隔符('/'在Unix上)对于这个模块并不特别。请参阅模块glob以获取路径名称扩展(glob用于fnmatch()匹配路径名段)。同样,以句点开头的文件名对于这个模块并不是特别的,并且*?模式匹配。

fnmatch.fnmatch(filename, pattern)

测试文件名字符串是否匹配模式字符串,返回TrueFalse。如果操作系统不区分大小写,那么在执行比较之前,这两个参数将被标准化为所有较低或较大的情况。fnmatchcase()可用于执行区分大小写的比较,而不管操作系统是否为标准。

这个例子将打印当前目录中所有扩展名为的文件名.txt

import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print file

fnmatch.fnmatchcase(filename, pattern)

测试文件名是否匹配模式,返回TrueFalse; 比较区分大小写。

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风格的路径扩展。