python自定义文件名_Python通过fnmatch模块实现文件名匹配

fnmatch 模块主要用于文件名称的匹配,其能力比简单的字符串匹配更强大,但比使用正则表达式相比稍弱。。如果在数据处理操作中,只需要使用简单的通配符就能完成文件名的匹配,则使用 fnmatch 模块是不错的选择。

fnmatch 模块中,常用的函数及其功能如表 1 所示。

Python fnmatch模块常用函数及功能

函数名

功能

fnmatch.filter(names, pattern)

对 names 列表进行过滤,返回 names 列表中匹配 pattern 的文件名组成的子集合。

fnmatch.fnmatch(filename, pattern)

判断 filename 文件名,是否和指定 pattern 字符串匹配

fnmatch.fnmatchcase(filename, pattern)

和 fnmatch() 函数功能大致相同,只是该函数区分大小写。

fnmatch.translate(pattern)

将一个 UNIX shell 风格的 pattern 字符串,转换为正则表达式

fnmatch 模块匹配文件名的模式使用的就是 UNIX shell 风格,其支持使用如下几个通配符:

*:可匹配任意个任意字符。

?:可匹配一个任意字符。

[字符序列]:可匹配中括号里字符序列中的任意字符。该字符序列也支持中画线表示法。比如 [a-c] 可代表 a、b 和 c 字符中任意一个。

[!字符序列]:可匹配不在中括号里字符序列中的任意字符。

例如,下面程序演示表 1 中一些函数的用法及功能:

import fnmatch

#filter()

print(fnmatch.filter(['dlsf', 'ewro.txt', 'te.py', 'youe.py'], '*.txt'))

#fnmatch()

for file in ['word.doc','index.py','my_file.txt']:

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

print(file)

#fnmatchcase()

print([addr for addr in ['word.doc','index.py','my_file.txt','a.TXT'] if fnmatch.fnmatchcase(addr, '*.txt')])

#translate()

print(fnmatch.translate('a*b.txt'))

程序执行结果为:

['ewro.txt']

my_file.txt

['my_file.txt']

(?s:a.*b\.txt)\Z

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值