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实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
Python实现提取文章摘要的方法
Apr 21 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
Python中asyncio与aiohttp入门教程
Oct 16 Python
python实现淘宝秒杀脚本
Jun 23 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
python 统计文件中的字符串数目示例
Dec 24 Python
Python基础之高级变量类型实例详解
Jan 03 Python
python基础之while循环语句的使用
Apr 20 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
Protoss兵种对照表
2020/03/14 星际争霸
php设计模式小结
2013/02/15 PHP
php-fpm配置详解
2014/02/12 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
JavaScript 学习笔记(四)
2009/12/31 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
Python pip使用超时问题解决方案
2020/08/03 Python
应用电子专业学生的自我评价
2013/10/16 职场文书
七年级地理教学反思
2014/01/26 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
主持词开场白
2014/03/17 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
员工自我工作评价
2015/03/06 职场文书
2016年党员承诺书范文
2016/03/24 职场文书