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实现的飞速中文网小说下载脚本
Apr 23 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
对python3标准库httpclient的使用详解
Dec 18 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
python实现简单的tcp 文件下载
Sep 16 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 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中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
Laravel5中contracts详解
2015/03/02 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
Python argparse模块应用实例解析
2019/11/15 Python
Python实现结构体代码实例
2020/02/10 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
机电专业个人求职信范文
2013/12/30 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
支行行长竞聘报告
2014/11/06 职场文书
家电创业计划书
2019/08/05 职场文书
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers