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中声明只包含一个元素的元组数据方法
Aug 25 Python
python写xml文件的操作实例
Oct 05 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
Python的爬虫程序编写框架Scrapy入门学习教程
Jul 02 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Python实现的本地文件搜索功能示例【测试可用】
May 30 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
python如何做代码性能分析
Apr 26 Python
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
May 28 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
javascript获取url上某个参数的方法
2013/11/08 Javascript
javascript实现动态标签云
2015/10/16 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
python实现多线程网页下载器
2018/04/15 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
Python中os模块功能与用法详解
2020/02/26 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
总经理助理职责
2014/02/04 职场文书
前台文员职责范本
2014/03/07 职场文书
护理目标管理责任书
2014/07/25 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
个人简历求职信范文
2015/03/20 职场文书
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs