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发布模块的步骤分享
Feb 21 Python
从零学python系列之从文件读取和保存数据
May 23 Python
Python如何实现文本转语音
Aug 08 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
使用python 写一个静态服务(实战)
Jun 28 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
Apr 10 Python
Python多线程thread及模块使用实例
Apr 28 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
python 制作python包,封装成可用模块教程
Jul 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获取url参数方法总结
2014/11/13 PHP
php简单压缩css样式示例
2016/09/22 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
鼠标事件延时切换插件
2011/03/12 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
PHP面试题大全
2015/10/16 面试题
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
党员学习中共十八大思想报告
2014/09/12 职场文书
紧急通知
2015/04/17 职场文书
运动会宣传稿100字
2015/07/23 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
python中pandas对多列进行分组统计的实现
2021/06/18 Python
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技