如何在Tkinter中使用Python调用最新的Excel文件?
解决方案
要自动读取指定目录下最新的Excel文件,你可以通过遍历目录、比较文件修改时间来实现。修改后的代码如下:
import os import pandas as pd from tkinter import LabelFrame # 假设你已导入tkinter相关组件 class Tables(): def __init__(self,*args,**kwargs): super().__init__(*args,**kwargs) frame_results = LabelFrame(frame_bottom, text='Results', font='Verdana 8') frame_results.pack(side=BOTTOM, fill=BOTH, expand=TRUE) self.table=Table(frame_results,dataframe=self.read(), showtoolbar=True, showstatusbar=True, editable=True,) self.table.show() def read(self): # 指定目标目录 target_dir = r"C:\Users\ruben.carballo\Desktop\Nodes_Real_Atr_v2_Plots\Results" # 获取目录下所有xlsx文件 excel_files = [f for f in os.listdir(target_dir) if f.endswith('.xlsx')] if not excel_files: raise FileNotFoundError("目标目录下没有Excel文件") # 拼接完整路径并按修改时间排序,取最新的文件 full_paths = [os.path.join(target_dir, f) for f in excel_files] # 按文件修改时间降序排列,最新的在第一个 full_paths.sort(key=lambda x: os.path.getmtime(x), reverse=True) latest_file = full_paths[0] # 读取最新的Excel文件 data = pd.read_excel(latest_file) return data
关键改动说明:
- 导入
os模块用于文件系统操作 - 替换固定文件名逻辑为动态查找:
- 遍历目标目录,筛选所有
.xlsx后缀的文件 - 基于文件修改时间排序,取排序后的第一个文件(最新的)
- 增加无Excel文件的异常处理,避免程序崩溃
- 遍历目标目录,筛选所有
额外说明:
- 若需按文件创建时间排序,可将
os.path.getmtime替换为os.path.getctime(注意:Windows下getctime是创建时间,Linux下是元数据修改时间) - 确保目标目录路径正确,且程序拥有该目录的读取权限
内容的提问来源于stack exchange,提问作者RCE1981
相关产品推荐
相关产品推荐

