glob模块用通配符匹配文件路径,支持、?、[]和*等模式,可结合recursive=True递归查找文件,适用于批量处理如列出.py文件,返回字符串列表,建议用/分隔路径,复杂场景可用pathlib替代。

在 Python 中,glob 模块用于查找符合特定规则的文件路径名,使用的是简单的通配符模式匹配,而不是正则表达式。它非常适合批量处理文件,比如读取某个目录下所有 .txt 文件或递归查找特定类型的文件。
基本用法:匹配当前目录下的文件
使用 glob.glob() 可以获取与模式匹配的所有文件路径列表。
例如,列出当前目录下所有以 .py 结尾的文件:
import glob
python_files = glob.glob("*.py")
for file in python_files:
print(file)
这会返回当前目录中所有形如 script.py、main.py 等的文件名(不包含子目录中的)。
立即学习“Python免费学习笔记(深入)”;
支持的通配符
glob 支持几种常见的通配符来构建匹配模式:
hkcms双语言响应式科技类通用模板是使用hkcms开源内容管理系统开发的一套响应式模板。内有新闻列表、新闻详情、单页、产品列表,产品详情页等。1.使用的框架采用HkCms开源内容管理系统v2.2.1版本2. 所需环境Apache/NginxPHP7.2 及以上 + MySQL 5.6 及以上3. 安装教程:1. 打开根目录,导入根目录下的数据库文件2. 站点运行路径填写到public目录下3.
-
*:匹配任意数量的字符(不含路径分隔符)
例:*.txt匹配所有文本文件 -
?:匹配单个字符
例:file?.log匹配file1.log、fileA.log -
[...]:匹配括号内的任意一个字符
例:image[0-9].png匹配image1.png到image9.png -
**:递归匹配所有子目录(需启用
recursive=True)
例:**/*.py查找所有子目录中的 Python 文件
递归查找:使用 ** 和 recursive 参数
要搜索包括子目录在内的所有匹配文件,可使用 ** 并设置 recursive=True。
例如,查找项目中所有 Python 文件:
import glob
all_py_files = glob.glob("**/*.py", recursive=True)
for file in all_py_files:
print(file)
这样可以找到根目录及其任意层级子目录下的 .py 文件,比如:utils/helper.py、tests/unit/test_app.py 等。
注意事项和建议
使用 glob 时需要注意以下几点:
- 路径分隔符建议使用正斜杠 / 或双反斜杠 \\,Python 能正确识别;在跨平台脚本中推荐用
os.path.join()或直接写/ - glob 返回的是字符串列表,不会区分文件和目录,如果需要判断可用
os.path.isfile() - 如果想获取绝对路径,可以结合
os.path.abspath()使用 - 对于更复杂的匹配需求,可考虑使用
pathlib.Path的.glob()方法,语法类似且更现代
基本上就这些。glob 是一个轻量、直观的工具,适合大多数日常文件搜索任务,不需要引入复杂逻辑就能快速定位目标文件。








