
本文介绍如何使用Python的pathlib模块,从当前目录中筛选出符合特定命名模式(如以“wf”开头、以“param.py”结尾)的Python脚本文件,并自动提取其核心前缀(如wf_list_dir)作为字符串变量。
本文介绍如何使用python的pathlib模块,从当前目录中筛选出符合特定命名模式(如以“wf”开头、以“param.py”结尾)的python脚本文件,并自动提取其核心前缀(如`wf_list_dir`)作为字符串变量。
在实际开发中,常需根据文件名特征动态获取配置标识或模块名称。例如,当目录中存在 wf_list_dir_param.py、wf_fetch_data_param.py 等文件时,我们希望安全、可扩展地提取 wf_list_dir 或 wf_fetch_data 这类前缀作为变量使用。
推荐使用现代、面向对象的 pathlib 模块替代传统 os.listdir() + 字符串判断的方式,代码更简洁、路径处理更健壮。以下为完整实现:
from pathlib import Path
# 定义匹配规则
prefix = "wf"
suffix = "_param.py"
source_dir = Path(".") # 当前工作目录
# 使用 glob 查找所有匹配文件(支持通配符,返回生成器)
matching_files = list(source_dir.glob(f"{prefix}*{suffix}"))
if not matching_files:
raise FileNotFoundError(f"未找到以 '{prefix}' 开头、以 '{suffix}' 结尾的文件")
# 提取第一个匹配项的前缀(去除 suffix 部分)
target_name = matching_files[0].stem.replace(suffix, "") # 更安全:先用 .stem 去除扩展名
# 或等价写法:target_name = matching_files[0].name[:-len(suffix)]
print(f"提取的变量名: {target_name}") # 输出:wf_list_dir
✅ 关键优势说明:
-
Path.glob()自动忽略隐藏文件(如.test.json.crc),且支持跨平台路径分隔符; -
.stem属性可靠获取不带扩展名的文件名(如wf_list_dir_param.py→wf_list_dir_param),再结合replace()可避免因长度计算错误导致的截断问题; - 若需支持多个匹配项,可遍历
matching_files并批量处理,例如构建列表:[f.stem.removesuffix('_param') for f in matching_files](Python 3.9+)。
⚠️ 注意事项:
- 确保目标文件真实存在且具有
.py扩展名;若存在同名但不同后缀的文件(如wf_list_dir_param.txt),需调整suffix为"_param.py"并依赖glob的精确匹配; - 生产环境中建议添加异常处理与日志,避免因空结果导致后续逻辑中断;
- 如需区分大小写匹配,
glob默认区分,无需额外设置;若需忽略大小写,可改用pathlib.Path.iterdir()+str.lower()手动过滤。
通过该方法,您能以声明式、可维护的方式完成文件名解析任务,为自动化脚本、动态模块加载等场景提供坚实基础。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











