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实现保证只能运行一个脚本实例
Jun 24 Python
Python进阶篇之字典操作总结
Nov 16 Python
代码分析Python地图坐标转换
Feb 08 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
Jun 28 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
Python实现迪杰斯特拉算法过程解析
Sep 18 Python
Python调用飞书发送消息的示例
Nov 10 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
js 实现在2d平面上画8的方法
2018/10/10 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
Python的函数的一些高阶特性
2015/04/27 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
Python反射的用法实例分析
2018/02/11 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
为什么python比较流行
2020/06/19 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
综合素质的自我鉴定
2013/10/07 职场文书
个人求职简历的自我评价
2013/10/19 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
公民授权委托书
2014/10/15 职场文书
工作会议通知
2015/04/15 职场文书
2015入党个人自传范文
2015/06/26 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书