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实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
Python实现简单的用户交互方法详解
Sep 25 Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 Python
python实现图书借阅系统
Feb 20 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
基于Python打造账号共享浏览器功能
May 30 Python
python实现画循环圆
Nov 23 Python
python3 字符串知识点学习笔记
Feb 08 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
python中使用.py配置文件的方法详解
Nov 23 Python
如何用Python徒手写线性回归
Jan 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
JS内部事件机制之单线程原理
2018/07/02 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
Django多数据库联用实现方法解析
2020/11/12 Python
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
2014迎新年晚会策划方案
2014/02/23 职场文书
贺卡寄语大全
2014/04/11 职场文书
综治维稳工作汇报
2014/10/27 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
经理聘任证明
2015/03/02 职场文书
公司2015年终工作总结
2015/05/26 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL