Python/Pandas场景下获取目录中最新修改文件的方法咨询
实现方案
你可以通过遍历上级Report目录下的子文件夹,筛选符合日期格式的条目后取最新的日期文件夹,自动生成所需的两个日期参数,无需手动输入。
完整实现代码
import os import pandas as pd from datetime import datetime # 构造Report根目录路径 userid = str(os.getlogin()) report_root = rf"C:\Users\{userid}\OneDrive\Report" valid_date_folders = [] # 遍历根目录下所有条目 for entry_name in os.listdir(report_root): entry_path = os.path.join(report_root, entry_name) # 跳过文件,只保留文件夹 if not os.path.isdir(entry_path): continue # 筛选名称符合「%b %Y」格式的日期文件夹 try: folder_date = datetime.strptime(entry_name, "%b %Y") valid_date_folders.append((folder_date, entry_name)) except ValueError: # 不符合日期格式的文件夹直接跳过 continue # 校验是否存在符合要求的文件夹 if not valid_date_folders: raise FileNotFoundError("Report目录下未找到符合格式的月份文件夹") # 取日期最大的即为最新的月份文件夹 latest_date, latest_smalldate = max(valid_date_folders, key=lambda x: x[0]) # 自动生成完整月份年份格式的参数 latest_monthyear = latest_date.strftime("%B %Y") # 拼接最终目标文件路径 gco = os.path.join(report_root, latest_smalldate, f"Detail Report - {latest_monthyear}.xlsx") # 可选:校验文件是否存在 if not os.path.exists(gco): raise FileNotFoundError(f"未找到目标文件:{gco}")
代码说明
- 会自动过滤Report目录下所有不符合
%b %Y格式的文件和文件夹,避免异常 - 按照日期维度取最新的文件夹,无需手动输入月份
- 自动生成你需要的
smalldate和monthyear两个参数,和原有逻辑完全兼容
内容的提问来源于stack exchange,提问作者Jonnyboi
相关产品推荐
相关产品推荐

