首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

fnmatch

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

扫码关注腾讯云开发者

领取腾讯云代金券