在Python中快速简单的文件对话框?

我有一个简单的脚本parsing一个文件,并将其内容加载到数据库。 我不需要UI,但现在我正在提示用户使用最不友好的raw_inputparsing文件,尤其是因为用户无法复制/粘贴path。 我想要一个快速简单的方法来向用户展示文件select对话框,他们可以select文件,然后将其加载到数据库。 (在我的使用情况下,如果他们碰巧select了错误的文件,那么parsing失败,即使它被加载到数据库也不会有问题。)

 import tkFileDialog file_path_string = tkFileDialog.askopenfilename() 

这个代码接近我想要的,但它留下一个恼人的空框架(这是不能被closures,可能是因为我没有注册一个closures事件处理程序)。

我不必使用tkInter,但是因为它在Python标准库中,所以它是最快和最简单的解决scheme的好select。

在没有任何其他用户界面的情况下,在脚本中提示input文件或文件名的快捷方法是什么?

Tkinter是最简单的方法,如果你不想有任何其他的依赖。 要仅显示没有任何其他GUI元素的对话框,则必须使用withdraw方法隐藏根窗口:

 import tkinter as tk from tkinter import filedialog root = tk.Tk() root.withdraw() file_path = filedialog.askopenfilename() 

Python 2变种:

 import Tkinter, tkFileDialog root = Tkinter.Tk() root.withdraw() file_path = tkFileDialog.askopenfilename() 

你可以使用easygui :

 import easygui path = easygui.fileopenbox() 

要安装easygui ,你可以使用pip

 pip3 install easygui 

它是一个使用easygui.py纯Python模块( easygui.py )。

尝试使用wxPython :

 import wx def get_path(wildcard): app = wx.App(None) style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST dialog = wx.FileDialog(None, 'Open', wildcard=wildcard, style=style) if dialog.ShowModal() == wx.ID_OK: path = dialog.GetPath() else: path = None dialog.Destroy() return path print get_path('*.txt') 

如果您不需要用户界面或者希望程序在CLI中运行,则可以将文件pathparsing为参数。 这将允许您使用CLI的自动完成function快速find您需要的文件。

如果脚本除了文件pathinput之外是非交互式的,这可能只是方便的。

查看EasyGUI,一个非常易于使用的模块,可以完成这项工作 – http://easygui.sourceforge.net/

您可以使用fileopenboxfunction – http://www.ferg.org/easygui/easygui.html#-fileopenbox