Python基础学习:fnmatch模块

                              fnmatch——Unix风格文件名匹配

资源代码:Lib/fnmatch.py

    该模块提供了对Unix shell风格的通配符的支持,这不同于日常的同名表达(这是针对re模块的文档中说明的)。shell风格通配符中的特殊字符如下:

模式

含义

*

匹配所有

匹配所有单个字符

[seq]

匹配seq中的任何字符

[!seq]

匹配不出现在seq中的任意字符

    对于线性匹配,包括括号中的元字符。例如,’[?]’匹配字符’?’。

    注意:文件名分隔符(Unix中为’/’)不会在该模块中指定。参见glob模块中关于路径名部分(glob使用fnmatch()去匹配路径名片段)。同样的,文件名开始与一个该模块中未指定的周期,并且使用*和?模式进行匹配。

fnmatch. fnmatch(filename, pattern)

    测试filename字符串是否匹配pattern字符串,返回True或False。所有的参数使用os.path.normcase().fnmatchcase()进行实例归一化,因此它们可以被用于执行区分大小的比较,无论再那种操作系统中都可以。

    该示例打印当前目录中带有.txt扩展名的所有的文件名:

import fnmatch

import os

 

for file in os.listdir('.'):

    if fnmatch.fnmatch(file, '*.txt'):

        print(file)

 

fnmatch. fnmatchcase(filename, pattern)

    测试filename是否匹配pattern,返回True或False;在实例归一化下比较,且不使用os.path.normcase()。

 

fnmatch. filter(names, pattern)

    返回names列表中与pattern匹配的子集合。这与[n for n in names if fnmatch(n, pattern)]相似,但是实施起来更加高效。

 

fnmatch. translate(pattern)

    返回shell风格的pattern转化之常规表达的结果,使用re.match()。

示例:

>>> 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'>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值