Выбор файла в Python с помощью простого диалога

Я хотел бы получить путь к файлу в качестве ввода в моем консольном приложении Python.

В настоящее время я могу запросить только полный путь в качестве входа в консоль.

есть ли способ вызвать простой пользовательский интерфейс, где пользователи могут выбрать файл вместо ввода полного пути?

5 ответов


Как насчет использования 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)

готово!


Python 3.x версия ответа Etaoin для полноты:

from tkinter.filedialog import askopenfilename
filename = askopenfilename()

С EasyGui (документацию pydoc и epydoc для версии 0.96):

import easygui
print easygui.fileopenbox()

установка:

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

демо:

import easygui
easygui.egdemo()

использовать tkFileDialog модуль который часть стандартной установки.

import tkFileDialog

print tkFileDialog.askopenfilename()

другой вариант для рассмотрения-Zenity:http://freecode.com/projects/zenity.

У меня была ситуация, когда я разрабатывал серверное приложение Python (без компонента GUI) и, следовательно, не хотел вводить зависимость от каких-либо наборов инструментов Python GUI, но я хотел, чтобы некоторые из моих сценариев отладки были параметризованы входными файлами и хотели визуально запрашивать у пользователя файл, если они не указали его в командной строке. Зенити идеально подходила. Добиться этого, вызовите "zenity --file-selection" с помощью модуля подпроцесса и захватите stdout. Конечно, это решение не зависит от Python.

Zenity поддерживает несколько платформ и уже установлен на наших серверах dev, поэтому он облегчил нашу отладку/разработку без введения нежелательной зависимости.