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中split方法用法分析
Apr 17 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
Python实现的递归神经网络简单示例
Aug 11 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
Nov 16 Python
Python中django学习心得
Dec 06 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
Python中dict和set的用法讲解
Mar 28 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
使用django实现一个代码发布系统
Jul 18 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 Python
Python办公自动化解决world文件批量转换
Sep 15 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
PHP5中MVC结构学习
2006/10/09 PHP
一个简单的域名注册情况查询程序
2006/10/09 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
php生成mysql的数据字典
2016/07/07 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
任意位置显示html菜单
2007/02/01 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
python读写json文件的简单实现
2017/04/11 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
项目开发计划书
2014/01/09 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang