如何按匹配模式选取Python执行目录DATA文件夹中的动态命名文件
解决方案:匹配DATA文件夹中唯一动态命名文件并获取完整路径
这问题我之前也碰到过,用Python的文件路径处理工具就能轻松搞定,给你两种常用的实现方式,选适合你的场景就行:
方式一:用Pathlib(Python 3.4+ 推荐)
Pathlib是Python 3.4引入的现代路径处理模块,语法更直观简洁,代码可读性更高:
from pathlib import Path # 获取脚本执行时的当前工作目录 script_working_dir = Path.cwd() # 拼接DATA文件夹的路径 data_folder = script_working_dir / "DATA" # 替换成你的文件匹配模式,比如"report_*.csv"、"*_daily_log.txt" # 支持通配符:*匹配任意长度字符,?匹配单个字符,[]匹配字符集合 matching_files = list(data_folder.glob("your_file_pattern_here")) # 题目明确只有一个匹配文件,直接取第一个结果即可 if matching_files: # resolve() 转换成绝对完整路径,确保路径准确 target_full_path = matching_files[0].resolve() print(f"成功找到目标文件:{target_full_path}") else: print("未找到符合指定模式的文件,请检查模式或DATA文件夹内容")
关键部分解释:
Path.cwd():获取脚本运行时的当前工作目录,也就是你执行脚本的目录。data_folder = script_working_dir / "DATA":用Pathlib的路径拼接语法,比传统的os.path.join更直观。glob():在指定文件夹内匹配符合模式的文件,如果你需要递归查找DATA的子文件夹,换成rglob()即可。
方式二:用os+glob模块(兼容旧版Python)
如果你的项目需要兼容Python 3.4以下版本,可以用传统的os和glob模块组合:
import os import glob # 获取脚本执行目录 script_working_dir = os.getcwd() # 拼接DATA文件夹路径 data_folder = os.path.join(script_working_dir, "DATA") # 组合成完整的匹配模式 file_pattern = os.path.join(data_folder, "your_file_pattern_here") # 获取所有匹配的文件 matching_files = glob.glob(file_pattern) if matching_files: # 转换成绝对完整路径 target_full_path = os.path.abspath(matching_files[0]) print(f"成功找到目标文件:{target_full_path}") else: print("未找到符合指定模式的文件,请检查模式或DATA文件夹内容")
注意事项:
- 一定要把代码里的
your_file_pattern_here替换成实际的文件命名模式,比如文件是20240523_sales_data.json这种日期前缀的,模式就写*_sales_data.json;如果是config_v2.1.ini这种版本后缀的,模式写config_v*.ini。 - 虽然题目说明只有一个匹配文件,但代码里还是加了非空判断,避免出现索引越界的错误(比如DATA文件夹里没有符合模式的文件时)。
- 如果需要查找DATA文件夹下所有子目录里的文件,在glob模块里可以加上
recursive=True参数,比如glob.glob(file_pattern, recursive=True)。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

