2010-08-26 14 views
75

साथ पायथन में एक फ़ाइल का चयन मैं अपने अजगर सांत्वना आवेदन में इनपुट के रूप में फ़ाइल पथ प्राप्त करना चाहते हैं।सरल संवाद

वर्तमान में मैं केवल कंसोल में एक इनपुट के रूप पूरा पथ के लिए पूछ सकते हैं।

वहाँ एक सरल उपयोगकर्ता इंटरफ़ेस जहाँ उपयोगकर्ताओं को पूरा पथ लिखने के बजाय फ़ाइल का चयन कर सकते हैं को गति प्रदान करने के लिए एक रास्ता है?

+1

यह प्रश्न एक सरल, क्रॉस प्लेटफ़ॉर्म पायथन लाइब्रेरी की सिफारिश करने वाले उत्तरों को आमंत्रित करेंगे। अच्छा सवाल नहीं है। बहुत से अलग जवाब होंगे और इसी तरह। – leonneo

+0

मैं देखता हूं कि यह प्रश्न क्यों बंद कर दिया गया था, लेकिन मेरे लिए यह सबसे तेज़ और सरल उदाहरण प्रदान करना था कि टिंकर के साथ एक खुली फ़ाइल संवाद कैसे प्राप्त करें (Google पर पहली बार हिट करें)। हो सकता है कि इसे सुधारना उचित होगा ताकि इसे फिर से खोल दिया जा सके? – luator

+1

@luator, सहायता केंद्र से नियमों का पालन करने के लिए प्रश्न संपादित किया। –

उत्तर

138

टिंकर का उपयोग करने के बारे में कैसे?

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

आपको बहुत धन्यवाद –

+0

मुझे टाइप एरर मिला: 'मॉड्यूल' ऑब्जेक्ट को() पर कॉल करने योग्य नहीं है। (निकालें) - कोई विचार? – user391339

+1

मुझे रूट = Tk.Tk() तो root.withdraw() करना था। अब खुली फ़ाइल संवाद विंडो बंद नहीं है। – user391339

4

tkFileDialog मॉड्यूल जो मानक स्थापना का हिस्सा है का उपयोग करें।

import tkFileDialog 

print tkFileDialog.askopenfilename() 
10

साथ EasyGui (संस्करण 0.96 के pydoc और epydoc द्वारा उत्पन्न प्रलेखन):

import easygui 
print easygui.fileopenbox() 

स्थापित करने के लिए:

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

डेमो:

import easygui 
easygui.egdemo() 
+0

यह अब तक का सबसे अच्छा समाधान है। मुख्य कारण यह है कि easygui एक पीपी पैकेज है और –

52

अजगर 3.x के संस्करण पूर्णता के लिए एटाइन का जवाब:

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

स्थापित करने में आसान है समान समांतरता के लिए, शायद 'आयात tkinter' + tkinter.Tk()। वापस लेना चाहिए() '। – imallett

2

ज़ेनिटी: http://freecode.com/projects/zenity पर विचार करने का एक और विकल्प है।

मुझे एक ऐसी स्थिति थी जहां मैं एक पायथन सर्वर एप्लिकेशन (कोई जीयूआई घटक) विकसित नहीं कर रहा था और इसलिए किसी भी पायथन जीयूआई टूलकिट पर निर्भरता पेश नहीं करना चाहता था, लेकिन मैं चाहता था कि मेरी कुछ डीबग स्क्रिप्ट इनपुट द्वारा पैरामीटरकृत हों फाइलें और उपयोगकर्ता को फ़ाइल के लिए दृश्यमान रूप से संकेत देना चाहती हैं अगर उन्होंने कमांड लाइन पर कोई निर्दिष्ट नहीं किया है। जेनिटी एकदम सही फिट था। इसे प्राप्त करने के लिए, subprocess मॉड्यूल का उपयोग करके "zenity --file-select" का आह्वान करें और stdout को कैप्चर करें। बेशक यह समाधान पायथन-विशिष्ट नहीं है।

Zenity कई प्लेटफार्मों का समर्थन करता है और इसलिए यह एक अवांछित निर्भरता को शुरू करने के बिना हमारे डिबगिंग/विकास में मदद की पहले से ही हमारे देव सर्वर पर स्थापित किया हुआ।

संबंधित मुद्दे