У меня есть простой сценарий, который анализирует файл и загружает его содержимое в база данных. Мне не нужен пользовательский интерфейс, но прямо сейчас я предлагаю пользователю выполнить синтаксический анализ файла с использованием raw_input
, что крайне неприятно, особенно потому, что пользователь не может скопировать / вставить путь. Мне нужен быстрый и простой способ представить диалоговое окно выбора файла пользователю, он может выбрать файл, а затем он будет загружен в базу данных. (В моем случае, если бы они случайно выбрали неправильный файл, он не смог бы выполнить синтаксический анализ и не стал бы проблемой, даже если бы он был загружен в базу данных.)
import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()
Этот код близок к тому, что я хочу, но он оставляет раздражающий пустой фрейм открытым (который не может быть закрыт, вероятно, потому, что я не зарегистрировал обработчик события закрытия).
Мне не нужно использовать tkInter, но, поскольку он входит в стандартную библиотеку Python, он является хорошим кандидатом для самого быстрого и простого решения.
Как быстро и легко запросить файл или имя файла в сценарии без какого-либо другого пользовательского интерфейса?
Используя tkinter (python 2) или Tkinter (python 3) это действительно возможно к открытому диалоговому окну дисплейного файла (См. другие ответы здесь). Заметьте однако, что пользовательский интерфейс того диалогового окна устарел и не делает соответствует более новому файлу открытые диалоговые окна, доступные в Windows 10.
Moreover - если Вы будете считать путь к embedd поддержке Python в Ваше собственное приложение то - Вы скоро узнаете, что tkinter библиотека не является открытым исходным кодом и еще более - это - коммерческая библиотека.
(Например, поиск "activetcl оценка" приведет Вас к этой веб-странице: https://reviews.financesonline.com/p/activetcl / )
Так tkinter библиотека будет стоить денег для любого желания приложения к embedd Python.
мне один удалось найти pythonnet библиотеку:
(Лицензия MIT)
Используя следующую команду возможно установить pythonnet:
pip3 install pythonnet
И здесь можно узнать рабочий пример для использования открытого диалогового окна файла:
https://stackoverflow.com/a/50446803/2338477
Позволил мне скопировать пример также здесь:
import sys
import ctypes
co_initialize = ctypes.windll.ole32.CoInitialize
# Force STA mode
co_initialize(None)
import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import OpenFileDialog
file_dialog = OpenFileDialog()
ret = file_dialog.ShowDialog()
if ret != 1:
print("Cancelled")
sys.exit()
print(file_dialog.FileName)
, Если Вы также пропускаете более сложный пользовательский интерфейс - см. папка Demo в pythonnet мерзавце.
я не уверен в мобильности к другой ОС, не попробовали, но .net 5 планируется, чтобы быть портированным нескольким ОС (Поисковые "платформы .net 5", https://devblogs.microsoft.com/dotnet/introducing-net-5 / ) - таким образом, эта технология также соответствует требованиям завтрашнего дня.