python通配符之glob模块的使用详解

通配符是一些特殊符号,主要有星号(*)和问号(?),用来模糊搜索文件,“*”可以匹配任意个数个符号, “?”可以匹配单个字符。

当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者需要匹配符合一定条件的多个目标文件时,可以使用通配符代替一个或多个真正的字符。

英文 “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']

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Python全局变量global关键字详解

    Python中的变量作用域 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量. 全局变量所有作用域都可用,局部变量只能在本函数可用,变量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量 那么问题来了, 如果想在函数内使用全局变量,或改变全局变量的值, 应该怎么做呢? Python全局变量global关键字 为了解决函数内使用全局变量的问题,python增加了global关键字, 利用它的特性, 可以指定变量的作用域. Python全局变量global关键字

  • Python全局变量与global关键字常见错误解决方案

    在Python的变量使用中,经常会遇到这样的错误: local variable 'a' referenced before assignment 它的意思是:局部变量"a"在赋值前就被引用了. 比如运行下面的代码就会出现这样的问题: a = 3 def Fuc(): print (a) a = a + 1 Fuc() ​ 但是如果把 a = a + 1 这一句删除又不会出现上述问题了 a = 3 def Fuc(): print (a) Fuc() ​ 原来,在Python中,a=3

  • Python: glob匹配文件的操作

    glob模块实例详解 glob的应用场景是要寻找一系列(符合特定规则)文件名. glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.查找文件只用到三个匹配符:"*", "?", "[]". "*"匹配0个或多个字符: "?"匹配单个字符: "[ ]"匹配指定范围内的字符,如:[0-9]匹配数字. 假设以下例子目录是这样的. dir dir/file.txt

  • Python3标准库glob文件名模式匹配的问题

    1. glob文件名模式匹配 尽管glob API很小,但这个模块的功能却很强大.只要程序需要查找文件系统中名字与某个模式匹配的一组文件,就可以使用这个模块.要创建一个文件名列表,要求其中各个文件名都有某个特定的扩展名.前缀或者中间都有某个共同的字符串,就可以使用glob而不用编写定制代码来扫描目录内容. glob的模式规则与re模块使用的正则表达式并不相同.实际上,glob的模式遵循标准UNIX路径扩展规则.只使用几个特殊字符来实现两个不同的通配符和字符区间.模式规则应用于文件名中的段(在路径

  • 浅析python标准库中的glob

    glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合. 1.通配符 星号(*)匹配零个或多个字符 import glob for name in glob.glob('dir/*'): print (name) dir/file.txt dir/file1.txt dir/file2.txt dir/filea.txt dir/fileb.txt dir/subdir 列出子目录中的文件,必须在模式中包括子目录名: import glob #用子目录查询文件 print ('Name

  • 简单了解python关键字global nonlocal区别

    第一,两者的功能不同.global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错). 第二,两者使用的范围不同.global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函

  • Python内置函数locals和globals对比

    这两个函数主要提供,基于字典的访问局部和全局变量的方式.在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值.实际上,名字空间可以象Python的字典一样进行访问 每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量.每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数.类.其它导入的模块.模块级的

  • python里glob模块知识点总结

    之前遇到过一类问题,要求快速做文件搜索,当时小编找了很多内容,但是没有发现实现方法,突然看到glob模块便豁然开朗了,该模块主要就是能够实现类似于windows的文件搜索,旗下的函数都可以实现搜索功能,并且有很多通配符,能够应用在多种场景中,一一对应的选择解决方案. 简单介绍: 匹配一定的格式文件和文件夹. 包含函数: 1.glob() 2.Iglob() 3.escape() 注意点: 不匹配以点符号(.)开始的文件,若需要则做处理. 应用实例: >>> import glob >

  • python通配符之glob模块的使用详解

    通配符是一些特殊符号,主要有星号(*)和问号(?),用来模糊搜索文件,"*"可以匹配任意个数个符号, "?"可以匹配单个字符. 当查找文件夹时,可以使用它来代替一个或多个真正字符:当不知道真正字符或者需要匹配符合一定条件的多个目标文件时,可以使用通配符代替一个或多个真正的字符. 英文 "globbing"意为统配,python在模块glob中定义了glob()函数,实现了对目录内容进行匹配的功能,glob.glob()函数接受通配模式作为输入,并

  • 表格梳理python内置数学模块math分析详解

    python内置数学模块math 提供了一些基础的计算功能,下列表达式默认 from math import * 默认输入输出均为一个数字.大部分函数都很直观,望文生义即可. 其他函数 isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) 若 a 和 b 的值比较接近则返回True,否则False. rel_tol 是相对容差,表示a, b之间允许的最大差值.例如,要设置5%的容差,rel_tol=0.05.rel_tol 必须大于0. abs_tol 是最小

  • Python学习之sys模块使用教程详解

    sys模块 与 os包一样,也是对系统资源进行调用.功能同样也是非常丰富,接下来我们会对 sys模块的一些简单且常用的函数进行介绍,主要针对一些非功能性的函数与属性来认识一些不太常见的 Python 背后的事件. sys 中的常用方法 函数名 参数 介绍 举例 返回值 modules(属性) 无 将Python启动时加载的模块集合起来并返回一个列表 sys.modules 列表 path(属性) 无 返回当前Py的环境路径(当前py环境可以导入内置.第三方包与函数的所在路径) sys.path

  • Python文件目录操作常用模块的使用详解

    目录 1. os模块 1.1 获取系统信息 1.2  工作目录与路径相关的操作 1.3 判断是否文件或目录以及指定文件目录是否存在 1.5 串连创建或者分离一个文件目录路径 1.6 执行外部shell命令 2. shutil模块 2.1 拷贝文件 2.2 移动或重命名文件 2.3 拷贝文件夹/删除文件夹 2.4 生成压缩文件 2.5 解压文件 Python中用于文件目录操作的常用模块有os, shutil,pathlib等. os就是“Operating System”的缩写,顾名思义,os模块

  • Python学习之configparser模块的使用详解

    目录 1 configparser安装 2 configparser简介 3 表示方法 4 configparser详细使用 4.1 对象初始化 4.2 获取所有的sections 4.3 获取所有的sections对应的options 4.4 read方法和get方法,获取指定section下的option值 4.5 items方法,获取指点section所用配置信息 4.6 set和write方法,修改某个option的值 4.7 has_section和has_option方法 4.8 a

  • Python 中的 Counter 模块及使用详解(搞定重复计数)

    文章目录 参考描述Counter 模块Counter() 类Counter() 对象字典有序性KeyError魔术方法 \_\_missing\_\_ update() 方法 Counter 对象的常用方法most_common()elements()total()subtract() Counter 对象间的运算加法运算减法运算并集运算交集运算单目运算 Counter 对象间的比较>== 参考 项目 描述 Python 标准库 DougHellmann 著 / 刘炽 等 译 搜索引擎 Bing

  • Python base64和hashlib模块及用法详解

    目录 一.base64模块 1.对字符串编解码 2.对URL编解码 二.hashlib模块 1.hashlib模块 1.1 常用属性 1.2 常用方法 1.3 使用步骤 2.MD5(消息摘要算法) 3.SHA-256(安全哈希算法) 一.base64模块 base64模块提供了在二进制数据和可打印ASCII字符间编解码的功能,包括 RFC3548中定义的Base16, Base32, Base64, Ascii85, Base85等编码. base64模块属于标准库,无需进行安装,导入即可使用.

  • Python利用Beautiful Soup模块搜索内容详解

    前言 我们将利用 Beautiful Soup 模块的搜索功能,根据标签名称.标签属性.文档文本和正则表达式来搜索. 搜索方法 Beautiful Soup 内建的搜索方法如下: find() find_all() find_parent() find_parents() find_next_sibling() find_next_siblings() find_previous_sibling() find_previous_siblings() find_previous() find_al

  • python中yaml配置文件模块的使用详解

    简述 和GNU一样,YAML是一个递归着说"不"的名字.不同的是,GNU对UNIX说不,YAML说不的对象是XML. YAML不是XML. 为什么不是XML呢?因为: YAML的可读性好. YAML和脚本语言的交互性好. YAML使用实现语言的数据类型. YAML有一个一致的信息模型. YAML易于实现. 上面5条也就是XML不足的地方.同时,YAML也有XML的下列优点: YAML可以基于流来处理: YAML表达能力强,扩展性好. 总之,YAML试图用一种比XML更敏捷的方式,来完成

  • Python select及selectors模块概念用法详解

    1. select模块 针对select,要先理解其他几个概念: 文件描述符: 文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符. 内核空间: Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0-4G.Linux内核将这4G字节的空间分为两部分.将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供

随机推荐