python - 通过 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()
解决方案
您可以使用 来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()
推荐阅读
- spring-boot - spring eclipselink 静态编织未启用或未发生
- ruby-on-rails - 模块中的 Rails 控制器在生产中因 ActionController::RoutingError 失败(未初始化的常量 Admin::
- batch-file - 将目录中最近创建的 csv 文件的时间戳保存到变量中
- spring - Spring MVC GET 请求日志记录
- sql - SQL Server 全文搜索 - 包含
- ios - 如何实现兼容java和objective-c的TOTP认证
- node.js - 在基于 nx 的 nodejs 应用程序中使用环境变量
- php - 基于sql查询的条件格式高亮表行
- ios - NotificationCenter 在我的 obj c 类(utills 类或对象类)中没有被触发。不是视图控制器
- angular - 当您使用 jhipster --skipserver 选项时,您可以使用哪些不同的选项进行身份验证