Python如何获取目录中文件名带最新时间戳的文件并转为DataFrame
实现方案
核心逻辑为直接解析文件名内嵌的时间戳作为排序依据,不依赖文件系统的创建/修改时间属性。
完整可运行代码
import glob from datetime import datetime import pandas as pd # 替换为你存放xlsx文件的实际目录路径 target_dir = "/path/to/your/xlsx_directory" # 仅匹配xlsx后缀文件,过滤其他无关文件 xlsx_list = glob.glob(f"{target_dir}/*.xlsx") def parse_file_timestamp(file_path): # 提取不带路径的纯文件名 filename = file_path.split("/")[-1] # 拆分文件名获取时间戳部分,去掉后缀 timestamp_str = filename.split("_")[-1].rstrip(".xlsx") # 转换为可直接比较大小的datetime对象 return datetime.strptime(timestamp_str, "%Y-%m-%d %H%M") # 按时间戳取最大值,得到最新文件路径 latest_file = max(xlsx_list, key=parse_file_timestamp) # 读取为DataFrame df = pd.read_excel(latest_file) print("最新文件为:", latest_file)
扩展说明
- 若你实际的文件名时间戳格式与示例不同,只需调整
strptime方法内的格式模板即可。 - 若需要按文件名前缀(如示例中的Test1、Test2)分别获取每个分组的最新文件,可使用分组逻辑实现:
from collections import defaultdict # 按前缀分组存储文件路径 file_groups = defaultdict(list) for file in xlsx_list: prefix = file.split("/")[-1].split("_")[0] file_groups[prefix].append(file) # 每个分组取时间戳最新的文件 group_latest_files = { prefix: max(group, key=parse_file_timestamp) for prefix, group in file_groups.items() }
- 若多个文件内嵌时间戳完全一致,
max会默认返回文件名排序靠前的结果,如有特殊排序需求可自行扩展key的返回规则。
内容的提问来源于stack exchange,提问作者user14073111
相关产品推荐
相关产品推荐

