Python标准库glob模块:文件模式匹配实战指南

小满
小满
发布时间:2026-10-11| 3人浏览过
原创

本文深入解析Python标准库中的glob模块,详细演示如何利用通配符(*、?、[])进行文件名模式匹配。通过创建测试目录与文件,展示如何精确查找特定格式文件、子目录文件及范围匹配,帮助开发者高效处理文件列表。

核心功能:无需遍历即可匹配

在Python中,glob模块提供了处理文件名模式匹配的核心功能。与手动遍历目录并逐一判断文件类型不同,glob模块允许开发者直接使用通配符表达式来筛选文件,极大地简化了文件查找的逻辑。

环境准备与测试数据构建

为了直观展示glob模块的匹配行为,我们需要构建一个包含不同文件类型和子目录的测试环境。请按照以下步骤操作:

  1. 创建临时目录tmp并进入该目录。
  2. 在该目录下创建三个文本文件:file1.txt、file2.txt和file3.log。
  3. 使用ls命令确认文件已创建成功。
import glob

# 基础匹配:匹配dir目录下所有文件
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

通配符详解与实战应用

glob模块支持多种通配符,以下是三种最常用的匹配模式及其具体用法。

1. 星号(*):匹配零个或多个字符

星号是最通用的通配符,可以匹配任意长度的字符序列(包括空字符串)。例如,*.txt将匹配所有以.txt结尾的文件。

# 使用零个或多个字符通配符 *
glob.glob("tmp/*.txt")
# 输出: ['file1.txt', 'file2.txt']

2. 问号(?):匹配单个字符

问号用于匹配文件名中的单个任意字符。这在需要精确控制文件命名格式时非常有用,例如匹配file1.txt到file9.txt。

# 使用单字符通配符 ?
glob.glob("tmp/file?.txt")
# 输出: ['file1.txt', 'file2.txt']

3. 范围匹配([]):匹配特定字符集

方括号用于定义字符范围。例如,[0-9]表示匹配0到9之间的任意数字。结合星号,可以实现更复杂的筛选逻辑。

# 使用范围匹配
glob.glob("tmp/file[0-9].txt")
# 输出: ['file1.txt', 'file2.txt']

子目录文件的匹配策略

当需要查找子目录中的文件时,glob模块提供了两种主要方式:显式指定子目录路径或使用通配符递归匹配。

方法一:显式指定子目录

直接写出子目录的名称,可以精确获取该子目录下的文件列表。

# 用子目录查询文件
print ('Named explicitly:')
for name in glob.glob('dir/subdir/*'):
  print ('\t', name)

# 输出示例:
# Named explicitly:
#     dir/subdir/subfile.txt

方法二:使用通配符匹配子目录

如果不确定子目录的具体名称,可以使用*作为子目录名的占位符。这种方式适用于匹配任意子目录下的特定文件。

# 用通配符* 代替子目录名
print ('Named with wildcard:')
for name in glob.glob('dir/*/*'):
  print ('\t', name)

# 输出示例:
# Named with wildcard:
#     dir/subdir/subfile.txt

总结

通过上述示例可以看出,glob模块是Python中处理文件模式匹配的强大工具。掌握*、?和[]等通配符的使用,能够显著提高文件处理的效率。无论是查找特定格式的文件,还是遍历子目录,glob都能提供简洁高效的解决方案。

以上就是Python标准库中glob模块的详细内容,更多关于Python文件处理与模式匹配的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。