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实现大文件排序的方法
Jul 10 Python
Python-嵌套列表list的全面解析
Jun 08 Python
python字符串中的单双引
Feb 16 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
python3 pillow模块实现简单验证码
Oct 31 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
Python实现图片识别加翻译功能
Dec 26 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
python之json文件转xml文件案例讲解
Aug 07 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生成自己的LOG文件
2006/10/09 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
浅析js封装和作用域
2013/07/09 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
基于Pycharm加载多个项目过程图解
2020/01/19 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
科技工作者先进事迹
2014/08/16 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis