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兔子毒药问题实例分析
Mar 05 Python
Python3安装Pymongo详细步骤
May 26 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
Python 实现自动导入缺失的库
Oct 29 Python
Python argparse模块应用实例解析
Nov 15 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
python3排序的实例方法
Oct 20 Python
python中uuid模块实例浅析
Dec 29 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 Python
python实现socket简单通信的示例代码
Apr 13 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根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
Python实现的几个常用排序算法实例
2014/06/16 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Python判断telnet通不通的实例
2019/01/26 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
Python join()函数原理及使用方法
2020/11/14 Python
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
优秀研究生自我鉴定
2013/12/04 职场文书
优秀教师申报材料
2014/12/16 职场文书
劳模先进事迹材料
2014/12/24 职场文书
护士自荐信怎么写
2015/03/06 职场文书
贫困证明书范文
2015/06/16 职场文书
TS 类型兼容教程示例详解
2022/09/23 Javascript