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 相关文章推荐
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
python 调用c语言函数的方法
Sep 29 Python
Python将多个excel表格合并为一个表格
Feb 22 Python
python代码过长的换行方法
Jul 19 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
对Python3 序列解包详解
Feb 16 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
Python存储读取HDF5文件代码解析
Nov 25 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强制类型转换,慎用!
2013/06/06 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
vue下拉列表功能实例代码
2018/04/08 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python CSV模块使用实例
2015/04/09 Python
Python中datetime模块参考手册
2017/01/13 Python
Python中防止sql注入的方法详解
2017/02/25 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
django框架ModelForm组件用法详解
2019/12/11 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
销售人员中英文自荐信
2013/09/22 职场文书
走进敬老院活动总结
2014/07/10 职场文书
英文道歉信
2015/01/20 职场文书
小学教师教学随笔
2015/08/14 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
pandas数值排序的实现实例
2021/07/25 Python
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle