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基于回溯法子集树模板解决选排问题示例
Sep 07 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
Python3内置模块random随机方法小结
Jul 13 Python
python tkinter实现屏保程序
Jul 30 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
sklearn+python:线性回归案例
Feb 24 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
大数据分析用java还是Python
Jul 06 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
Python实现疫情地图可视化
Feb 05 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 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
js实现登录与注册界面
2017/11/01 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
用Python编写web API的教程
2015/04/30 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
python实现动态创建类的方法分析
2019/06/25 Python
python 爬取疫情数据的源码
2020/02/09 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
pandas分批读取大数据集教程
2020/06/06 Python
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
网络方面基础面试题
2012/11/16 面试题
《雨点》教学反思
2014/02/12 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
Ajax实现异步加载数据
2021/11/17 Javascript