我想在我的Python控制台应用程序中获取文件路径作为输入。
目前,我只能要求完整路径作为控制台中的输入。
有没有一种触发简单用户界面的方法,用户可以在其中选择文件而不是键入完整路径?
我想在我的Python控制台应用程序中获取文件路径作为输入。
目前,我只能要求完整路径作为控制台中的输入。
有没有一种触发简单用户界面的方法,用户可以在其中选择文件而不是键入完整路径?
Answers:
使用tkinter怎么样?
from Tkinter import Tk
from tkinter.filedialog import askopenfilename
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)
做完了!
Etaoin答案的Python 3.x版本的完整性:
from tkinter.filedialog import askopenfilename
filename = askopenfilename()
import tkinter
+ tkinter.Tk().withdraw()
。
使用EasyGui(由pydoc和epydoc生成的0.96版文档):
import easygui
print(easygui.fileopenbox())
安装:
pip install easygui
演示:
import easygui
easygui.egdemo()
invalid syntax
出错print easygui.diropenbox()
?
在Python 2中,使用tkFileDialog
模块。
import tkFileDialog
tkFileDialog.askopenfilename()
在Python 3中,使用tkinter.filedialog
模块。
import tkinter.filedialog
tkinter.filedialog.askopenfilename()
另一个要考虑的选项是Zenity:http://freecode.com/projects/zenity。
我遇到的情况是我正在开发Python服务器应用程序(没有GUI组件),因此不想引入对任何python GUI工具包的依赖关系,但是我希望我的一些调试脚本可以通过输入文件进行参数化,并且想要如果用户未在命令行上指定文件,则以可视方式提示用户输入文件。Zenity非常适合。为此,请使用子流程模块调用“ zenity --file-selection”并捕获标准输出。当然,此解决方案不是特定于Python的。
Zenity支持多种平台,并且恰好已经安装在我们的开发服务器上,因此它方便了我们的调试/开发,而没有引入不必要的依赖性。
我用wxPython获得的结果比tkinter更好,这是对以后重复的问题的回答:
https://stackoverflow.com/a/9319832
wxPython版本通过xfce桌面在我的OpenSUSE Tumbleweed安装中几乎通过任何其他应用程序生成的文件对话框看上去都与打开文件对话框相同,而tkinter却产生了局促且难以理解的内容,并且使用了不熟悉的侧滚动界面。