如何自动选取E盘中最新日期命名文件夹并访问其内TXT文件?
自动获取E盘最新日期文件夹内的TXT文件解决方案
问题分析
原代码硬编码了固定日期的文件夹路径,导致无法自动识别E盘下最新创建的、符合YYYYMMDD格式的日期文件夹,只能处理指定日期内的文件。
修正后的代码
import os import glob import re # 目标根路径 root_path = 'E:/' # 筛选E盘下所有符合YYYYMMDD格式的文件夹 date_folders = [ folder for folder in os.listdir(root_path) if os.path.isdir(os.path.join(root_path, folder)) and re.match(r'^\d{8}$', folder) ] if not date_folders: print("未找到符合YYYYMMDD格式的日期文件夹") else: # 利用YYYYMMDD字符串可直接比较的特性,获取最新日期文件夹 latest_folder = max(date_folders) # 定位该文件夹下所有TXT文件 txt_files = glob.glob(os.path.join(root_path, latest_folder, '*.txt')) if txt_files: # 获取文件夹内最新创建的TXT文件 latest_txt = max(txt_files, key=os.path.getctime) print("最新TXT文件路径:", latest_txt) else: print(f"[{latest_folder}] 文件夹内未找到TXT文件")
关键改进点
- 动态筛选日期文件夹:通过正则表达式
^\d{8}$匹配YYYYMMDD格式的文件夹名称,配合os.path.isdir确保筛选的是目录而非文件 - 准确获取最新日期:由于
YYYYMMDD格式的字符串天然支持字典序比较(例如20230223>20230222),直接用max()获取最新日期文件夹比依赖创建时间更可靠(避免文件夹创建时间与命名日期不符的情况) - 路径拼接规范:使用
os.path.join拼接路径,适配不同操作系统的路径分隔符
原代码问题点
原代码直接指定了E:/20230222/*路径,无法动态识别其他日期文件夹,导致只能处理固定日期内的文件。
内容的提问来源于stack exchange,提问作者Beast
相关产品推荐
相关产品推荐

