Choisir un fichier en Python avec une boîte de dialogue simple

Je voudrais obtenir le chemin du fichier en entrée dans mon application de console Python.

Actuellement, Je ne peux demander que le chemin complet en entrée dans la console.

Existe-t-il un moyen de déclencher une interface utilisateur simple où les utilisateurs peuvent sélectionner un fichier au lieu de taper le chemin complet?

89
demandé sur Mustafa Zengin 2010-08-27 01:13:11

5 réponses

Que diriez-vous d'utiliser 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)

Fait!

149
répondu Etaoin 2018-06-15 20:45:33

Python 3.X version de la réponse D'Etaoin pour l'exhaustivité:

from tkinter.filedialog import askopenfilename
filename = askopenfilename()
64
répondu Stefano Palazzo 2010-08-26 21:43:40

Avec EasyGui (documentation générée par pydoc et epydoc pour la version 0.96):

import easygui
print easygui.fileopenbox()

Pour installer:

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

Démo:

import easygui
easygui.egdemo()
13
répondu jfs 2014-06-02 03:07:11

Utilisez le module tkFileDialog qui fait partie de l'installation standard.

import tkFileDialog

print tkFileDialog.askopenfilename()
5
répondu Gary Kerr 2010-08-26 21:21:55

Une Autre option à considérer est Zenity: http://freecode.com/projects/zenity.

J'ai eu une situation où je développais une application serveur Python (pas de Composant GUI) et donc je ne voulais pas introduire de dépendance sur les toolkits GUI python, mais je voulais que certains de mes scripts de débogage soient paramétrés par des fichiers d'entrée et je voulais inviter visuellement l'utilisateur à un fichier s'il n'en spécifiait pas un sur la ligne de commande. Zenity était un ajustement parfait. Pour y parvenir, invoquez " zenity -- file-selection " en utilisant le module de sous-processus et capturer le stdout. Bien sûr, cette solution n'est pas spécifique à Python.

Zenity prend en charge plusieurs plates-formes et s'est déjà installé sur nos serveurs de développement, ce qui a facilité notre débogage/développement sans introduire de dépendance indésirable.

2
répondu kylejmcintyre 2013-05-22 19:46:12