У меня есть простой скрипт, который анализирует файл и загружает его содержимое в базу данных. Мне не нужен пользовательский интерфейс, но прямо сейчас я предлагаю пользователю проанализировать файл, raw_input
что наиболее неприятно, особенно потому, что пользователь не может скопировать / вставить путь. Мне нужен быстрый и простой способ представить диалоговое окно выбора файла пользователю, он может выбрать файл, а затем он будет загружен в базу данных. (В моем случае, если бы они случайно выбрали неправильный файл, он не смог бы выполнить синтаксический анализ и не стал бы проблемой, даже если бы он был загружен в базу данных.)
import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()
Этот код близок к тому, что я хочу, но он оставляет открытым раздражающий пустой фрейм (который не может быть закрыт, вероятно, потому, что я не зарегистрировал обработчик события закрытия).
Мне не нужно использовать tkInter, но, поскольку он входит в стандартную библиотеку Python, он является хорошим кандидатом для самого быстрого и простого решения.
Какой быстрый и простой способ запросить файл или имя файла в сценарии без какого-либо другого пользовательского интерфейса?
источник
Ответы:
Tkinter - самый простой способ, если вы не хотите иметь никаких других зависимостей. Чтобы отобразить только диалог без каких-либо других элементов графического интерфейса, вам нужно скрыть корневое окно, используя
withdraw
метод:Вариант Python 2:
источник
tkinter.filedialog.askopenfilename()
import Tkinter as tk
andimport tkFileDialog
andfile_path = tkFileDialog.askopenfilename()
Вы можете использовать easygui :
Для установки
easygui
можно использоватьpip
:Это единственный чистый модуль Python (
easygui.py
), который используетtkinter
.источник
Попробуйте с wxPython :
источник
Если вам не нужен пользовательский интерфейс или вы ожидаете, что программа будет работать в CLI, вы можете проанализировать путь к файлу как аргумент. Это позволит вам использовать функцию автозаполнения вашего интерфейса командной строки, чтобы быстро найти нужный файл.
Это, вероятно, будет удобно только в том случае, если сценарий не является интерактивным, кроме ввода пути к файлу.
источник
Используя tkinter (python 2) или Tkinter (python 3), действительно можно отобразить диалог открытия файла (см. Другие ответы здесь). Однако обратите внимание, что пользовательский интерфейс этого диалогового окна устарел и не соответствует новым диалоговым окнам открытия файлов, доступным в Windows 10.
Более того - если вы ищете способ встроить поддержку Python в свое собственное приложение - вы скоро обнаружите, что библиотека tkinter не является открытым исходным кодом и, более того, это коммерческая библиотека.
(Например, поиск по запросу «цены на activetcl» приведет вас на эту веб-страницу: https://reviews.financesonline.com/p/activetcl/ )
Таким образом, библиотека tkinter будет стоить денег для любого приложения, которое хочет встраивать Python.
Мне самому удалось найти библиотеку pythonnet:
(Лицензия MIT)
Используя следующую команду, можно установить pythonnet:
А вот рабочий пример использования диалога открытия файла:
https://stackoverflow.com/a/50446803/2338477
Позвольте мне скопировать пример здесь:
Если вам также не хватает более сложного пользовательского интерфейса - см. Папку Demo в pythonnet git.
Я не уверен насчет переносимости на другие ОС, не пробовал, но .net 5 планируется портировать на несколько ОС (поиск "платформы .net 5", https://devblogs.microsoft.com/dotnet/introduction -net-5 / ) - так что эта технология также является перспективной.
источник
pywin32
обеспечивает доступ кGetOpenFileName
функции win32. Из примераисточник
|win32con.OFN_NOCHANGEDIR
кFlags
, но остерегайтесь предостережение stackoverflow.com/questions/50468051/...GetOpenFileNameW
.Оцените EasyGUI, очень простой в использовании модуль, который должен работать - http://easygui.sourceforge.net/
Вы должны использовать функцию fileopenbox, подробно описанную на этой странице документации api - https://easygui.readthedocs.io/en/latest/api.html
источник