2010-08-26 14 views
75

Python konsol uygulamamda dosya yolu olarak girdi almak istiyorum.Basit İletişim Kutusuyla Python'da bir dosya seçimi

Şu anda yalnızca konsolda giriş olarak tam yolu isteyebilirim.

Kullanıcıların tam yolu yazmak yerine dosyayı seçebileceği basit bir kullanıcı arabirimini tetiklemenin bir yolu var mı?

+1

Bu sorular basit, çapraz platformlu bir python kitaplığı öneren yanıtları davet edecektir. İyi bir soru değil. Çok farklı cevaplar olacak ve böyle devam edecek. – leonneo

+0

Bu sorunun neden kapatıldığını anladım, ancak benim için Tkinter ile açık bir dosya iletişiminin nasıl yapılacağı hakkında net ve basit bir örnek sunmak en hızlı olanıydı (aynı zamanda google'da ilk vuruş). Belki yeniden formüle edilmeli, böylece tekrar açılabilir mi? – luator

+1

@luator, yardım merkezindeki kuralları takip etmek için soruyu düzenledi. –

cevap

138

Tkinter kullanımı hakkında nasıl?

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) 

Bitti!

+2

Çok teşekkür ederim –

+0

TipError aldım: 'module' nesnesi Tk(). Withdraw() - herhangi bir fikir üzerinde callable değil mi? – user391339

+1

Kök = Tk.Tk() sonra root.withdraw() yapmak zorunda kaldım. Şimdi açık dosya iletişim penceresi kapanmıyor. – user391339

4

Standart yüklemenin bir parçası olan tkFileDialog modülünü kullanın.

import tkFileDialog 

print tkFileDialog.askopenfilename() 
10

EasyGui (sürümü 0.96 için pydoc ve epydoc tarafından oluşturulan belgeler) ile:

import easygui 
print easygui.fileopenbox() 

yüklemek için:

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

Demo: ait

import easygui 
easygui.egdemo() 
+0

Bu, bugüne kadarki en iyi çözüm. Ana nedeni, easygui'nin bir pip paketidir ve –

52

Python 3.x sürümü Etaoin'in eksiksizliği için yanıtı:

+5

'u yüklemek kolaydır. Toplam paralellik için muhtemelen 'import tkinter' + 'tkinter.Tk(). Withdraw()' olmalıdır. – imallett

2

Göz önünde bulundurulması gereken başka bir seçenek de Zenity: http://freecode.com/projects/zenity.

Bir Python sunucu uygulaması (GUI bileşeni yok) geliştirdiğim ve herhangi bir python GUI araç takımına bağımlılık getirmek istemediğim bir durum vardı, ancak bazı hata ayıklama komut dosyalarının girdi tarafından parametrelenmesini istedim dosyaları ve komut satırında belirtmediyse, kullanıcıyı bir dosya için görsel olarak sormak istedim. Zenity mükemmel bir uyum oldu. Bunu başarmak için alt işlem modülünü kullanarak "zenite - dosya seçimini" çağırın ve stdout'u yakalayın. Elbette bu çözüm Python'a özgü değil.

Zenite birden çok platformu destekler ve dev sunucularında zaten kurulu olduğu için istenmeyen bir bağımlılık yaratmadan hata ayıklama/geliştirmemizi kolaylaştırır.

İlgili konular