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生成随机MAC地址
Mar 10 Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
八大排序算法的Python实现
Jan 28 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
python math模块的基本使用教程
Jan 16 Python
pytorch 使用半精度模型部署的操作
May 24 Python
Python一些基本的图像操作和处理总结
Jun 23 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实现处理输入转义字符的代码
2015/11/08 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python字典的常用方法总结
2019/07/31 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
django中的数据库迁移的实现
2020/03/16 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
技术经理的自我评价范文
2013/12/03 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
建设投标担保书
2014/05/13 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL