fnmatch — Unix 文件名模式匹配

源代码: Lib/fnmatch.py


此模块提供对 Unix Shell 样式通配符的支持,这些通配符与正则表达式(在re模块中有说明)不同。 Shell 样式通配符中使用的特殊字符为:

Pattern Meaning
* matches everything
? 匹配任何单个字符
[seq] 匹配* seq *中的任何字符
[!seq] 匹配* seq *中以外的任何字符

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

请注意,文件名分隔符(在 Unix 上为'/')对于该模块不是*特殊的。请参阅模块glob中的路径名扩展(glob使用filter()匹配路径名段)。同样,以句点开头的文件名在该模块中不是特殊的,并且由*?模式匹配。

本示例将打印当前目录中 extensions 为.txt的所有文件名:

import fnmatch
import os

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

Example:

>>> import fnmatch, re
>>>
>>> regex = fnmatch.translate('*.txt')
>>> regex
'(?s:.*\\.txt)\\Z'
>>> reobj = re.compile(regex)
>>> reobj.match('foobar.txt')
<re.Match object; span=(0, 10), match='foobar.txt'>

See also

  • Module glob

  • Unix shell 样式的路径扩展。

首页