Python通过fnmatch模块实现文件名匹配


Posted in Python onSeptember 30, 2020

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

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

Python 相关文章推荐
python批量修改文件后缀示例代码分享
Dec 24 Python
python字符串排序方法
Aug 29 Python
Python函数返回值实例分析
Jun 08 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 Python
python 爬取天气网卫星图片
Jun 07 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 Python
python垃圾回收机制原理分析
Apr 13 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 Python
Python tempfile模块生成临时文件和临时目录
Sep 30 #Python
Python实现定时监测网站运行状态的示例代码
Sep 30 #Python
python如何实现word批量转HTML
Sep 30 #Python
Python识别验证码的实现示例
Sep 30 #Python
Python列表嵌套常见坑点及解决方案
Sep 30 #Python
python实现感知机模型的示例
Sep 30 #Python
python 实现关联规则算法Apriori的示例
Sep 30 #Python
You might like
PHP脚本数据库功能详解(上)
2006/10/09 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
JavaScript代码执行的先后顺序问题
2017/10/29 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
js实现选项卡效果
2020/03/07 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
Python3实现的判断环形链表算法示例
2019/03/07 Python
python中if嵌套命令实例讲解
2021/02/25 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
天游软件面试
2013/11/23 面试题
机械设计职业生涯规划书
2013/12/27 职场文书
车祸赔偿收入证明
2014/01/09 职场文书
公司门卫管理制度
2014/02/01 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
小学优秀教师材料
2014/12/15 职场文书
教师节倡议书2015
2015/04/27 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
2016年感恩节寄语
2015/12/07 职场文书
高三物理教学反思
2016/02/20 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android