
本文介绍如何使用python的pathlib模块,从当前目录中筛选出符合特定命名规则(如以"wf"开头、以"_param.py"结尾)的文件,并提取其核心名称部分作为变量。
本文介绍如何使用python的pathlib模块,从当前目录中筛选出符合特定命名规则(如以"wf"开头、以"_param.py"结尾)的文件,并提取其核心名称部分作为变量。
在日常脚本开发中,常需根据文件名模式动态提取关键标识符(如模块名、任务ID等)。例如,当目录中存在文件 wf_list_dir_param.py 时,我们希望自动提取 wf_list_dir 并存入变量,便于后续逻辑复用。
推荐使用现代、面向对象的 pathlib 模块替代传统的 os.listdir() + 字符串处理方式,代码更简洁、可读性更强,且天然支持跨平台路径操作。
以下为完整实现方案:
调用 Cutout.Pro 视觉处理 API 进行背景移除、人像抠图和照片增强,支持文件上传与图片 URL 输入。
from pathlib import Path
# 定义匹配规则
prefix = "wf"
suffix = "_param.py"
source_dir = Path(".") # 当前工作目录
# 使用 glob 模式匹配:wf* _param.py(注意 * 通配任意字符)
matching_files = list(source_dir.glob(f"{prefix}*{suffix}"))
if matching_files:
# 提取第一个匹配项的核心名称(移除后缀)
target_name = matching_files[0].stem.replace(suffix, "") # 更健壮:用 stem 避免扩展名干扰
# 或等价写法:target_name = matching_files[0].name[:-len(suffix)]
print(f"提取的变量名: {target_name}") # 输出: wf_list_dir
# ✅ 此处可将 target_name 赋值给任意变量供后续使用
module_base = target_name
else:
print("未找到匹配的文件(以 'wf' 开头且以 '_param.py' 结尾)")
⚠️ 注意事项:
-
glob()返回的是Path对象,而非字符串,因此应优先调用.name(含扩展名)或.stem(不含扩展名)获取文件名; - 若目录中存在多个匹配文件(如
wf_a_param.py,wf_b_param.py),上述代码仅取首个——如需全部提取,可用列表推导式:[f.stem[:-len('_param')] for f in source_dir.glob('wf*_param.py')]; - 严格匹配“以
wf开头、以_param.py结尾”时,glob("wf*_param.py")已足够;若需更复杂逻辑(如校验中间部分是否仅含字母数字下划线),建议结合正则表达式re.match(r'^wf[a-zA-Z0-9_]+_param\.py$', file.name)进行二次过滤。
该方法简洁可靠,适用于自动化配置、动态模块导入、CI/CD 脚本等场景。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










