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怎么学好python?
Oct 07 Python
python实现网页链接提取的方法分享
Feb 25 Python
跟老齐学Python之有容乃大的list(1)
Sep 14 Python
python中requests模块的使用方法
Apr 08 Python
python操作redis的方法
Jul 07 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 Python
python中sympy库求常微分方程的用法
Apr 28 Python
django rest framework serializers序列化实例
May 13 Python
python 录制系统声音的示例
Dec 21 Python
用Python制作灯光秀短视频的思路详解
Apr 13 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
header导出Excel应用示例
2014/01/24 PHP
跟我学Laravel之路由
2014/10/15 PHP
Javascript 继承机制实例
2009/08/12 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
Python 统计字数的思路详解
2018/05/08 Python
Python中的Django基本命令实例详解
2018/07/15 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
python中必要的名词解释
2019/11/20 Python
会计专业自我鉴定范文
2013/12/29 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
诚信贷款承诺书
2014/05/30 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js