2010-08-26 41 views
75

我想在我的Python控制檯應用程序中獲取文件路徑作爲輸入。使用簡單對話框在Python中選擇文件

目前我只能要求在控制檯中輸入完整路徑。

有沒有辦法觸發一個簡單的用戶界面,用戶可以選擇文件而不是輸入完整路徑?

+1

這個問題將邀請推薦一個簡單的跨平臺python庫的答案。不是一個好問題。會有很多不同的答案等等。 – leonneo 2013-12-26 12:37:14

+0

我明白爲什麼這個問題被關閉了,但對我而言,它是最快速的一個,提供了一個關於如何與Tkinter打開文件對話框(也是第一次打到谷歌)的清晰簡單的例子。也許這是值得重新制定它,因此它可以重新打開? – luator 2017-09-12 12:46:28

+1

@luator,編輯問題以遵循幫助中心的規則。 – 2017-09-12 23:29:09

回答

138

如何使用Tkinter?

from Tkinter import Tk 
from tkFileDialog 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) 

完成!

+2

非常感謝你 – 2010-08-26 21:27:28

+0

我得到了TypeError:'module'對象在Tk()。上不可調用。withdraw() - 任何想法? – user391339 2014-02-18 20:58:49

+1

我不得不做root = Tk.Tk()然後root.withdraw()。但是,現在打開的文件對話窗口不會關閉。 – user391339 2014-02-18 21:07:59

4

使用屬於標準安裝的tkFileDialog模塊。

import tkFileDialog 

print tkFileDialog.askopenfilename() 
10

隨着EasyGui(由pydocepydoc爲0.96版本生成的文檔):

import easygui 
print easygui.fileopenbox() 

要安裝:

pip install http://easygui.sourceforge.net/download/version0.96/easygui_v0.96.zip 

演示:

import easygui 
easygui.egdemo() 
+0

這是迄今爲止最好的解決方案。主要原因是easygui是一個pip包並且易於安裝 – 2017-06-07 08:13:07

52

的Python 3.X的版本Etaoin的完整性回答:

from tkinter.filedialog import askopenfilename 
filename = askopenfilename() 
+5

對於總體的並行性,應該還可能有'import tkinter' +'tkinter.Tk()。withdraw()'。 – imallett 2017-04-04 03:43:58

2

另一個需要考慮的選擇是Zenity:http://freecode.com/projects/zenity

我有一種情況,我正在開發一個Python服務器應用程序(沒有GUI組件),因此不想引入對任何python GUI工具包的依賴,但我希望我的一些調試腳本可以通過輸入參數化文件,並且想要直觀地提示用戶輸入文件,如果他們沒有在命令行上指定一個文件的話。 Zenity非常適合。要實現這一點,請使用子進程模塊調用「zenity --file-selection」並捕獲stdout。當然,這個解決方案不是Python特有的。

Zenity支持多種平臺,並且恰巧已經安裝在我們的開發服務器上,所以它促進了我們的調試/開發,而不會引入不需要的依賴關係。

相關問題