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通过pil将图片转换成黑白效果的方法
Mar 16 Python
Python使用Supervisor来管理进程的方法
May 28 Python
python实现数据图表
Jul 29 Python
python实现决策树
Dec 21 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
python实现交并比IOU教程
Apr 16 Python
python编程项目中线上问题排查与解决
Nov 01 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中文分词系统SCWS安装和使用实例
2014/04/11 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
python字典序问题实例
2014/09/26 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
python查看模块,对象的函数方法
2018/10/16 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
weblogic面试题
2016/03/07 面试题
大学生自荐信
2013/12/11 职场文书
护士自荐信范文
2013/12/15 职场文书
销售心得体会
2014/01/02 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
高一政治教学反思
2014/01/28 职场文书
艺术节主持词
2014/04/02 职场文书
扬尘污染防治方案
2014/06/15 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
捐助倡议书
2015/01/19 职场文书