webentwicklung-frage-antwort-db.com.de

Auswahl einer Datei in Python mit einfachem Dialog

Ich möchte den Dateipfad als Eingabe in meiner Python Konsolenanwendung erhalten.

Derzeit kann ich nur den vollständigen Pfad als Eingabe in der Konsole anfordern.

Gibt es eine Möglichkeit, eine einfache Benutzeroberfläche auszulösen, in der Benutzer Dateien auswählen können, anstatt den vollständigen Pfad einzugeben?

109
Mustafa Zengin

Wie wäre es mit 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)

Getan!

181
Etaoin

Python 3.x-Version von Etaoins Antwort zur Vollständigkeit:

from tkinter.filedialog import askopenfilename
filename = askopenfilename()
78
Stefano Palazzo

Mit EasyGui (Dokumentation erstellt von pydoc und epydoc für Version 0.96):

import easygui
print easygui.fileopenbox()

Installieren:

pip install easygui

Demo:

import easygui
easygui.egdemo()
23
jfs

Verwenden Sie das Modul tkFileDialog , das Teil der Standardinstallation ist.

import tkFileDialog

print tkFileDialog.askopenfilename()
6
Gary Kerr

Eine weitere zu berücksichtigende Option ist Zenity: http://freecode.com/projects/zenity .

Ich hatte eine Situation, in der ich eine Python Serveranwendung) (keine GUI-Komponente) entwickelte und daher keine Abhängigkeit von irgendwelchen python= GUI-Toolkits einführen wollte Ich wollte jedoch, dass einige meiner Debug-Skripte durch Eingabedateien parametrisiert werden, und wollte den Benutzer visuell zur Eingabe einer Datei auffordern, wenn in der Befehlszeile keine angegeben wurde. Zenity passte perfekt. Rufen Sie dazu "zenity" auf --file-selection "mit dem Subprozessmodul und erfassen Sie die Standardausgabe. Natürlich ist diese Lösung nicht Python-spezifisch.

Zenity unterstützt mehrere Plattformen und war bereits auf unseren Entwicklerservern installiert, sodass das Debuggen/Entwickeln erleichtert wurde, ohne dass eine unerwünschte Abhängigkeit eingeführt wurde.

3
kylejmcintyre