别再手动遍历文件夹了!Python glob模块的5个高效文件查找技巧(附实战代码)
每次看到同事用os.listdir()加for循环处理文件时,我都忍不住想安利这个被低估的标准库——glob。上周帮实习生优化数据清洗脚本,原本20行的文件遍历逻辑,用glob三行就搞定了。这就像用瑞士军刀切牛排,不是不行,但明明有更专业的工具。
1. 为什么你的文件遍历代码需要重构
我见过太多Python脚本开头是这样的:
python复制import os
all_files = []
for root, dirs, files in os.walk('/data/logs'):
for file in files:
if file.endswith('.log'):
all_files.append(os.path.join(root, file))
这种写法有三个致命伤:
- 可读性差:嵌套循环+条件判断,一眼看不清核心逻辑
- 性能损耗:
os.walk会遍历所有子目录,即使你只需要特定文件 - 维护困难:当匹配规则变复杂时(比如既要
.log又要排除temp_前缀),代码会越来越臃肿
glob模块的解决方式优雅得多:
python复制import glob
log_files = glob.glob('/data/logs/**/*.log', recursive=True)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. glob核心技巧:通配符的魔法组合
2.1 基础通配符三剑客
| 符号 | 作用 | 示例 | 匹配结果 |
|---|---|---|---|
* |
任意数量字符 | *.csv |
a.csv, data.csv |
? |
单个字符占位 | 2023-0?.xlsx |
