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

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

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

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

Ответ 1

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

Готово!

Ответ 2

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

from tkinter.filedialog import askopenfilename
filename = askopenfilename()

Ответ 3

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

import easygui
print(easygui.fileopenbox())

Для установки:

pip install easygui

Demo:

import easygui
easygui.egdemo()

Ответ 4

В Python 2 используйте модуль tkFileDialog.

import tkFileDialog

tkFileDialog.askopenfilename()

В Python 3 используйте модуль tkinter.filedialog.

import tkinter.filedialog

tkinter.filedialog.askopenfilename()

Ответ 5

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

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

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

Ответ 6

импорт ткинтер как тк

tk.Tk().draw() # это не позволяет мне показывать корневое окно.

Python3.x, windows 10