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 相关文章推荐
详解tensorflow实现迁移学习实例
Feb 10 Python
python中abs&map&reduce简介
Feb 20 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
对python文件读写的缓冲行为详解
Feb 13 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
Python threading的使用方法解析
Aug 28 Python
python集合常见运算案例解析
Oct 17 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
浅析Django接口版本控制
Jun 26 Python
Python socket如何解析HTTP请求内容
Feb 12 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 xfocus防注入资料
2008/04/27 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
详解PHP PDO简单教程
2019/05/28 PHP
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
医校毕业生自我鉴定
2014/01/25 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
汽车销售员工作总结
2015/08/12 职场文书
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js