Python中glob库实现文件名的匹配


Posted in Python onJune 18, 2021
目录
  • 前言
  • 通配符
    • 星号(*)
    • 问号(?)
    • 区间匹配([0-9][a-z][A-Z])
  • 转义元字符

 

前言

既然在Pathlib库中提到了glob()函数,那么我们就专门用一篇内容讲解文件名的匹配。其实我们有专门的一个文件名匹配库就叫:glob。

不过,glob库的API非常小,但是仅仅应用于文件名的匹配绰绰有余。只要是在实际的项目中需要过滤,或者匹配一组文件,都可以使用该库进行操作。

 

通配符

 

星号(*)

话不多说,下面我们使用通配符来匹配文件名,示例如下:

import glob

for name in sorted(glob.glob('text/*')):
    print(name)

运行之后,效果如下:

Python中glob库实现文件名的匹配

这里不仅用*通配符获取了目录下的所有文件,而且还对其进行了排序。

 

问号(?)

问号(?)是用来匹配单字的,比如我们赛选上面1开头的图片文件。示例如下:

import glob

for name in glob.glob('text/1?.png'):
    print(name)

运行之后,效果如下:

Python中glob库实现文件名的匹配

 

区间匹配([0-9][a-z][A-Z])

从上面两个匹配我们看出来,glob库的匹配规则与正则表达式有些相似。既然它能匹配模糊的,一个或多个字符,那么肯定也可以匹配区间字符。

示例如下:

import glob

for name in glob.glob('text/15[a-z].*'):
    print(name)

运行之后,效果如下:

Python中glob库实现文件名的匹配

 

转义元字符

当然,上面的文件名都是常规的文件名,都是用字母与数字组成的。但是,有些人比较怪,可能在文件名中包含了特殊的字符,比如上面的匹配字符“?*[”等。那怎么办呢?用反斜杠“\”转义吗?

其实,我们还有更简单的,直接使用escape()函数进行操作。示例如下:

import glob

escape_str='?*[]'
for char in escape_str:
    pattern = 'text/*' + glob.escape(char) + '.png'
    for name in glob.glob(pattern):
        print(name)

运行之后,效果如下:

Python中glob库实现文件名的匹配

到此这篇关于Python中glob库实现文件名的匹配的文章就介绍到这了,更多相关Python 文件名的匹配内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python的gevent框架下执行异步的Solr查询的教程
Apr 16 Python
Django中login_required装饰器的深入介绍
Nov 24 Python
深入理解Django的中间件middleware
Mar 14 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
Python中if elif else及缩进的使用简述
May 31 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
Python编程flask使用页面模版的方法
Dec 28 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
python中的测试框架
Nov 13 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
python中的装饰器该如何使用
Jun 18 #Python
Python预测分词的实现
学会Python数据可视化必须尝试这7个库
python tqdm用法及实例详解
Jun 16 #Python
python使用pymysql模块操作MySQL
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 #Python
Python中else的三种使用场景
Jun 16 #Python
You might like
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
围观tangram js库
2010/12/28 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
layui实现数据分页功能
2019/07/27 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
简单介绍Python中的struct模块
2015/04/28 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
python从子线程中获得返回值的方法
2019/01/30 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
Django xadmin安装及使用详解
2020/10/26 Python
如何填写个人简历自我评价
2013/12/10 职场文书
财务工作者先进事迹材料
2014/01/17 职场文书
自主招生自荐信指南
2014/02/04 职场文书
元旦获奖感言
2014/03/08 职场文书
产品包装策划方案
2014/05/18 职场文书
平安建设工作方案
2014/06/02 职场文书
社区创先争优承诺书
2014/08/30 职场文书
婚庆答谢词
2015/01/04 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
vue实现移动端div拖动效果
2022/03/03 Vue.js