Выбор файла на 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