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 str与repr的区别
Mar 23 Python
Python学习笔记之常用函数及说明
May 23 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
浅谈python函数之作用域(python3.5)
Oct 27 Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
python使用tkinter库实现五子棋游戏
Jun 18 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
浅析使用Python搭建http服务器
Oct 27 Python
Python Selenium库的基本使用教程
Jan 04 Python
10个顶级Python实用库推荐
Mar 04 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中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
javascript定时器完整实例
2015/02/10 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
如何编写jquery插件
2017/03/29 jQuery
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
用C++封装MySQL的API的教程
2015/05/06 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
centos7之Python3.74安装教程
2019/08/15 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
教师职业道德事迹材料
2014/08/18 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
实施意见格式范本
2015/06/05 职场文书
mysql部分操作
2021/04/05 MySQL
用Python实现Newton插值法
2021/04/17 Python
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS