You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Tkinter结合Pandas读取指定路径多Excel文件报错问题

Tkinter选择文件夹后读取固定命名Excel文件报错解决方案

问题说明

代码运行后选择文件夹读取文件时抛出FileNotFoundError: [Errno 2] No such file or directory错误,预期效果为:用户选择目标文件夹后,代码自动读取文件夹内预先固定命名的Excel文件,文件名提前在代码中配置,不需要手动逐个选文件。

核心错误原因

  • 路径拼接逻辑错误:手动硬编码\作为路径分隔符,跨系统兼容性差;且读取INFO_2.xlsx时漏写分隔符,拼接出的路径格式为[文件夹路径]INFO_2.xlsx,路径完全无效
  • 输入框逻辑缺陷:多次点击选择文件夹按钮时,新路径会直接插入到输入框原有内容的最前方,导致路径字符串叠加混乱
  • 缺少前置校验:没有判断用户是否选中有效文件夹、目标文件是否存在,直接执行读取操作极易触发异常

修复后代码

from tkinter import *
from tkinter import filedialog as fd
import tkinter
from tkinter import messagebox
import os
import pandas as pd 
import tkinter.font as tkFont
import numpy as np 
import warnings


top = tkinter.Tk()
top.title('Interface')
top.resizable(True, True)

top.geometry('1000x350')
L1 = Label(top, text="Choose worksheet")
L1.grid(column=0, row=5, padx=10, pady=10)
E1 = Entry(top, bd=5, width=70)
E1.grid(row=5, column=1, pady=10)

def findpath():
    f = fd.askdirectory()
    # 先清空输入框原有内容,避免路径叠加
    E1.delete(0, END)
    E1.insert(0, f)


def trying():
    folder = E1.get().strip()
    # 校验是否选择了有效文件夹
    if not folder:
        messagebox.showerror("错误", "请先选择目标文件夹")
        return
    # 用标准方法拼接路径,自动适配不同系统的路径分隔符
    path_info1 = os.path.join(folder, 'INFO_1.xlsx')
    path_info2 = os.path.join(folder, 'INFO_2.xlsx')
    # 校验目标文件是否存在
    if not os.path.exists(path_info1):
        messagebox.showerror("错误", f"文件不存在:{path_info1}")
        return
    if not os.path.exists(path_info2):
        messagebox.showerror("错误", f"文件不存在:{path_info2}")
        return
    
    base_info_cambio = pd.read_excel(path_info1)
    base_info_cliente = pd.read_excel(path_info2)
    messagebox.showinfo("提示", "文件读取完成")

btnFind = Button(top, text='  Find   ', command=findpath, height=1)
btnFind.grid(row=7,column=3, pady=25, )

btnRead = Button(top, text='   Read ', command=trying, height=1)
btnRead.grid(row=8,column=3, pady=25, )

top.mainloop()

关键改动点

  • 选择文件夹后先调用E1.delete(0, END)清空输入框历史内容,再写入新路径,避免多次选择后路径错乱
  • 所有路径拼接统一用os.path.join(文件夹路径, 文件名),不需要手动写/或者\,Windows、macOS、Linux都能正常识别,不会出现漏写分隔符的问题
  • 增加两层校验:先判断是否选中文件夹,再判断两个目标Excel是否真实存在,提前弹出可读提示,不会直接抛出系统级错误
  • 修正了原代码中重名按钮变量的问题,避免无意义的变量覆盖

内容的提问来源于stack exchange,提问作者LUCAS XX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:48:32