Python glob模块详解:文件匹配与目录创建

不晚
不晚
发布时间:2026-10-14| 4人浏览过
原创

本文详细介绍Python中glob模块的使用方法,涵盖*、?、[]等通配符在文件路径匹配中的应用。通过具体代码示例演示如何查找当前目录及子目录文件,并介绍利用os.makedirs实现递归创建目录的功能,帮助开发者高效处理文件搜索与目录管理任务。

glob模块基础与通配符规则

glob模块实例详解

glob模块的主要应用场景是查找符合特定规则的一系列文件名。

作为Python中内容最精简的模块之一,glob模块专注于查找符合特定规则的文件路径。其核心功能依赖于三个匹配符:“*”、“?”和“[]”。

“*”用于匹配0个或多个任意字符。

“?”用于匹配单个任意字符。

“[ ]”用于匹配指定范围内的字符,例如“[0-9]”可匹配任意数字。

假设存在如下示例目录结构。


dir
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir
dir/subdir/subfile.txt

文件匹配实战:当前目录与子目录

匹配所有文件

使用“*”可以匹配任意长度的字符序列。在实际开发中,glob.glob()最为常用,它返回一个包含匹配路径的列表;若需节省内存,也可使用glob.iglob()返回生成器。


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

匹配子目录文件

可以明确指定子目录名称,也可以使用通配符代替子目录名,从而实现不显示指定具体子目录名称的匹配。


print 'Named explicitly:'
for name in glob.glob('dir/subdir/*'):
  print '\t', name

print 'Named with wildcard:'
for name in glob.glob('dir/*/*'):
  print '\t', name

Named explicitly:
  dir/subdir/subfile.txt
Named with wildcard:
  dir/subdir/subfile.txt

高级匹配:单字符与区间通配符

单字节通配符匹配

除了“*”之外,“?”用于匹配单个字符。例如,以下代码用于匹配以“file”开头、以“.txt”结尾,且中间仅包含一个任意字符的文件。

for name in glob.glob('dir/file?.txt'):

print name


dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt

字符区间匹配[0-9]

例如,匹配后缀前为数字的文件。

for name in glob.glob('dir/*[0-9].*'):

print name

dir/file1.txt

dir/file2.txt

参考来源:

官方文档

Python Module of the Week

补充:递归遍历与目录创建

补充知识:Python glob 递归遍历匹配文件;os.makedirs()递归创建目录

Glob递归遍历匹配文件

简约版

在Python中,glob模块用于查找匹配的文件。

常用的匹配规则如下:

* 匹配所有文件

? 匹配一个字符

如果没有找到匹配项,glob.glob(path)将返回一个空列表[]。


from glob import glob
file_path = "/home/lihuiyu/Code/results_S2_W20040/*/*.pth"
print(glob(file_path))

排序版

为了简化工作,我倾向于通过代码解决重复性问题,而非人工处理。

为了保持代码整洁,我追求结果的整齐划一,因此对代码质量有较高要求。


import re
from glob import glob
def atoi(s):
 return int(s) if s.isdigit() else s
def natural_keys(text):
 return [atoi(c) for c in re.split('(\d+)', text)]
 
file_path = "/home/lihuiyu/Code/results_S2_W20040/*/*.pth"
file_list = glob(file_path)
file_list.sort(key=natural_keys)
for name in file_list:
  print(name)

os.makedirs()递归创建目录

os.mkdir()用于创建指定的目录,但如果其上一级目录不存在,则创建会失败。

os.makedirs()实现了递归创建目录的功能,即使中间层级目录不存在也能自动创建。

以上关于Python glob模块匹配文件的操作内容即为分享的全部,希望能为大家提供参考,也希望大家多多支持本站。

相关标签:

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

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