Python glob模块详解:通配符匹配与文件搜索实战

顾言
顾言
发布时间:2026-10-14| 2人浏览过
原创

本文详细介绍Python中glob模块的使用方法,涵盖glob()与iglob()函数的参数、返回值及递归选项。重点解析*、?、[]等通配符的匹配规则,结合Windows与Linux路径示例,演示如何高效查找符合特定规则的文件与目录,适用于自动化脚本与文件管理场景。

通配符是一类特殊符号,主要包括星号(*)和问号(?),常用于模糊搜索文件。其中,“*”能够匹配任意数量的字符,而“?”仅匹配单个字符。

在查找文件夹时,通配符可替代一个或多个真实字符;当无法确定具体字符名,或需要匹配满足特定条件的多个目标文件时,使用通配符替代真实字符是高效的选择。

英文“globbing”意为统配,Python在glob模块中定义了glob()函数,用于实现目录内容的匹配功能。glob.glob()函数接收通配模式作为输入,并返回所有匹配的文件名和路径名列表,其功能与os.listdir类似。

glob模块中常用的函数包括glob()和iglob()。


glob(pathname, recursive=False) 

第一个参数pathname为需要匹配的字符串路径。建议在该参数前加上r前缀,以原始字符串形式传递,从而避免转义字符引发的错误。

第二个参数recursive代表是否启用递归调用,通常与特殊通配符“**”配合使用,默认值为False。

该函数返回一个包含符合条件路径的字符串列表。若运行环境为Windows系统,路径中的反斜杠“\”会自动转换为双反斜杠“\\”以进行转义。


iglob(pathname, recursive=False) 

iglob函数的参数与glob()保持一致。

iglob返回一个迭代器,它不会一次性将所有匹配到的路径保存在内存中,而是逐个获取匹配的文件路径名。遍历该迭代器的结果与使用相同参数调用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模块是Python中最简单的模块之一,内容精简。它主要用于查找符合特定规则的文件路径名。

其用法类似于Windows下的文件搜索功能,主要用到三个匹配符:'*'、'?'和'[ ]'。其中,“*”匹配任意0个或多个字符;“?”匹配任意单个字符;“[ ]”匹配指定范围内的字符,例如:[0-9]用于匹配数字。

glob匹配不区分大小写。

默认情况下,以'.'开头的隐藏文件不匹配。

查看上一级目录内容。

执行以下代码可查看上一级所有目录:


>>> print(glob.glob("../*"))
['..\\Python37-32', '..\\Python38-32']

查看本级目录内容。

执行以下代码可查看本级所有目录:


>>> 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("./*.*"))
['.\\LICENSE.txt', '.\\NEWS.txt', '.\\python.exe', '.\\python3.dll', '.\\python38.dll', '.\\pythonw.exe', '.\\vcruntime140.dll']

查看本级所有dll文件。

执行以下代码可查看本级所有dll文件:


>>> print(glob.glob("./*.dll"))
['.\\python3.dll', '.\\python38.dll', '.\\vcruntime140.dll']

查看C盘所有目录。

执行以下代码可查看C盘所有目录:


>>> print(glob.glob("C:/*"))
['C:/$360Section', 'C:/$Recycle.Bin', 'C:/360SANDBOX', 'C:/Boot', 'C:/bootmgr'.......]

查看C盘包含特定组合的目录。

执行以下代码可查看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']

查看C盘包含P_o模式的目录。

执行以下代码可查看C盘所有包含P_o(中间任意单字符)的目录:


>>> print(glob.glob("C:/*P?O*"))
['C:/Program Files', 'C:/Program Files (x86)', 'C:/ProgramData']

查看C盘两级目录下的txt文件。

执行以下代码可查看C盘两级目录下所有的txt文件:


>>> print(glob.glob("C:/*/*.txt"))
['C:/xiaoyi\\检索式.txt']

以上为个人经验总结,希望能为大家提供参考。也希望大家多多支持本站。如有错误或未考虑周全之处,欢迎指正。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。