python通配符之glob模块的使用详解


Posted in Python onApril 24, 2021

通配符是一些特殊符号,主要有星号(*)和问号(?),用来模糊搜索文件,“*”可以匹配任意个数个符号, “?”可以匹配单个字符。

当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者需要匹配符合一定条件的多个目标文件时,可以使用通配符代替一个或多个真正的字符。

英文 “globbing”意为统配,python在模块glob中定义了glob()函数,实现了对目录内容进行匹配的功能,glob.glob()函数接受通配模式作为输入,并返回所有匹配的文件名和路径名列表,与os.listdir类似。

glob模块中的常用函数:

glob(pathname, recursive=False)

第一个参数pathname为需要匹配的字符串。(该参数应尽量加上r前缀,以免发生不必要的错误)

第二个参数代表递归调用,与特殊通配符“**”一同使用,默认为False。

该函数返回一个符合条件的路径的字符串列表,如果使用的是Windows系统,路径上的“\”符号会自动加上转义符号变为“\\”。

iglob(pathname, recursive=False)

参数与glob()一致。

返回一个迭代器,该迭代器不会同时保存所有匹配到的路径,而是逐个获取匹配的文件路径名,遍历该迭代器的结果与使用相同参数调用glob()的返回结果一致。

glob模块支持的通配符:

通配符 功能
* 匹配0或多个字符
** 匹配所有文件、目录、子目录和子目录里的文件(3.5版本新增)
? 匹配1个字符,与正则表达式里的?不同
[exp] 匹配指定范围内的字符,如:[1-9]匹配1至9范围内的字符
[!exp] 匹配不在指定范围内的字符

glob.glob函数使用示例

import glob
 
listglob = []
listglob = glob.glob(r"/home/xxx/picture/*.png")
listglob.sort()
print listglob
 
print '--------------------'
listglob = glob.glob(r"/home/xxx/picture/0?.png")
listglob.sort()
print listglob
 
print '--------------------'
listglob = glob.glob(r"/home/xxx/picture/0[0,1,2].png")
listglob.sort()
print listglob
 
print '--------------------'
listglob = glob.glob(r"/home/xxx/picture/0[0-3].png")
listglob.sort()
print listglob
 
print '--------------------'
listglob = glob.iglob(r"/home/xxx/picture/0[a-z].png")
print listglob
for item in listglob:
    print item

补充:Python glob() 函数 秒懂

Python glob()

glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。

跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:'*', “?”, “[ ]”。”*”匹配任意0个或多个字符;”?”匹配任意单个字符;”[ ]”匹配指定范围内的字符,如:[0-9]匹配数字。

不区分大小写

'.'开头的不匹配

print(glob.glob(r' . ./*') )上一级所有目录

>>> print(glob.glob("../*"))
['..\\Python37-32', '..\\Python38-32']

print(glob.glob(r' ./*') )本级所有目录

>>> print(glob.glob("./*"))
['.\\DLLs', '.\\Doc', '.\\include', '.\\Lib', '.\\libs', '.\\LICENSE.txt', '.\\NEWS.txt', '.\\python.exe', '.\\python3.dll', '.\\python38.dll', '.\\pythonw.exe', '.\\Scripts', '.\\tcl', '.\\Tools', '.\\vcruntime140.dll']

print(glob.glob(r' ./ * . *') )本级所有文件

print(glob.glob("./*.*"))
['.\\LICENSE.txt', '.\\NEWS.txt', '.\\python.exe', '.\\python3.dll', '.\\python38.dll', '.\\pythonw.exe', '.\\vcruntime140.dll']

print(glob.glob(r' ./ * . *') )本级所有dll

>>> print(glob.glob("./*.dll"))
['.\\python3.dll', '.\\python38.dll', '.\\vcruntime140.dll']

print(glob.glob(r' C:/ * ') )C盘所有目录

>>> print(glob.glob("C:/*"))
['C:/$360Section', 'C:/$Recycle.Bin', 'C:/360SANDBOX', 'C:/Boot', 'C:/bootmgr'.......]

print(glob.glob(“C:/[PB][RO]”) )C盘所有包含pr/po/br/bo的目录

print(glob.glob("C:/*[PB][RO]*"))
['C:/360SANDBOX', 'C:/Boot', 'C:/bootmgr', 'C:/BOOTNXT', 'C:/BOOTSECT.BAK', 'C:/PO', 'C:/Program Files', 'C:/Program Files (x86)', 'C:/ProgramData']

print(glob.glob(“C:/p?O”) )C盘所有包含P_o的目录

>>> print(glob.glob("C:/*P?O*"))
['C:/Program Files', 'C:/Program Files (x86)', 'C:/ProgramData']

print(glob.glob(“C://.txt”) )C盘两级目录所有的txt

>>> print(glob.glob("C:/*/*.txt"))
['C:/xiaoyi\\检索式.txt']

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
django在接受post请求时显示403forbidden实例解析
Jan 25 Python
python贪婪匹配以及多行匹配的实例讲解
Apr 19 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
python地震数据可视化详解
Jun 18 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
Python tornado上传文件的功能
Mar 26 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 Python
Django debug为True时,css加载失败的解决方案
Apr 24 #Python
python 模块重载的五种方法
Apr 24 #Python
写一个Python脚本自动爬取Bilibili小视频
python实现图片批量压缩
Apr 24 #Python
如何用python绘制雷达图
两行代码解决Jupyter Notebook中文不能显示的问题
python基础详解之if循环语句
Apr 24 #Python
You might like
一个PHP数组应该有多大的分析
2009/07/30 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
完善的jquery处理机制
2016/02/21 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
js模糊查询实例分享
2016/12/26 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
详解vue 模版组件的三种用法
2017/07/21 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
python进阶教程之文本文件的读取和写入
2014/08/29 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
酒店总经理工作职责
2013/12/13 职场文书
学习党章思想汇报
2014/01/07 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
公司保密管理制度
2015/08/04 职场文书
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers