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 相关文章推荐
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
通过Python使用saltstack生成服务器资产清单
Mar 01 Python
在win和Linux系统中python命令行运行的不同
Jul 03 Python
在Pycharm中自动添加时间日期作者等信息的方法
Jan 16 Python
Python何时应该使用Lambda函数
Jul 02 Python
python障碍式期权定价公式
Jul 19 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
Python基于execjs运行js过程解析
Nov 27 Python
Python的collections模块真的很好用
Mar 01 Python
Python数据结构之队列详解
Mar 21 Python
Python Pandas解析读写 CSV 文件
Apr 11 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
男方父母婚礼答谢词
2014/01/25 职场文书
先进工作者获奖感言
2014/02/08 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
年终总结会议主持词
2014/03/17 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
投资意向协议书
2015/01/29 职场文书
语文教师求职信范文
2015/03/20 职场文书
八月迷情观后感
2015/06/11 职场文书
英语导游欢迎词
2015/09/30 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
go xorm框架的使用
2021/05/22 Golang
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS