首页 > 解决方案 > 通过 Tkinter 检索多个文件名

问题描述

我正在尝试使用 Tkinter 构建一个简单的应用程序,它可以选择多个文件并分别获取它们的完整路径 + 文件名。目前,该应用程序可以选择多个文件,但似乎无法获得完整路径,任何关于此的指针都会很棒。

from tkinter import * 
from tkinter.ttk import *
from tkinter.filedialog import askopenfile
import os  
root = Tk() 
root.geometry('200x100') 


def browse():
    filename = askopenfile(mode ='r', filetypes =[('files', '*.csv')], multiple=True)
    pathlabel.config(text=filename)

browsebutton = Button(root, text="Browse", command=browse)
browsebutton.pack()

pathlabel = Label(root)
pathlabel.pack()        
        
mainloop() 

标签: pythontkinter

解决方案


您可以使用 来askopenfilename()代替askopenfile()这将返回一个包含所选文件的文件路径的元组。要获取文件名,可以使用os.path.basename(file/path)this 将返回相应的文件名(连同扩展名)。可以参考下面修改后的代码:

from tkinter import * 
from tkinter.ttk import *
from tkinter.filedialog import askopenfilename
import os  
root = Tk() 

def browse():
    files = askopenfilename(filetypes =[('files', '*.csv')], multiple=True)
    file_paths=''
    file_names=''
    for file in files:
        file_paths+=file+'\n'
        file_names+=os.path.basename(file)+'\n'
    pathlabel.config(text=file_paths)
    namelabel.config(text=file_names)

browsebutton = Button(root, text="Browse", command=browse)
browsebutton.pack()

path_head=Label(root,text='File Paths').pack()
pathlabel = Label(root)
pathlabel.pack()       
name_head=Label(root,text='File Names').pack()
namelabel=Label(root)
namelabel.pack() 
        
mainloop()

推荐阅读