Быстрый и простой диалог с файлом в Python?

У меня есть простой сценарий, который анализирует файл и загружает его содержимое в база данных. Мне не нужен пользовательский интерфейс, но прямо сейчас я предлагаю пользователю выполнить синтаксический анализ файла с использованием raw_input , что крайне неприятно, особенно потому, что пользователь не может скопировать / вставить путь. Мне нужен быстрый и простой способ представить диалоговое окно выбора файла пользователю, он может выбрать файл, а затем он будет загружен в базу данных. (В моем случае, если бы они случайно выбрали неправильный файл, он не смог бы выполнить синтаксический анализ и не стал бы проблемой, даже если бы он был загружен в базу данных.)

import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()

Этот код близок к тому, что я хочу, но он оставляет раздражающий пустой фрейм открытым (который не может быть закрыт, вероятно, потому, что я не зарегистрировал обработчик события закрытия).

Мне не нужно использовать tkInter, но, поскольку он входит в стандартную библиотеку Python, он является хорошим кандидатом для самого быстрого и простого решения.

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

90
задан Buttons840 15 April 2014 в 02:23
поделиться

1 ответ

Используя 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 / ) - таким образом, эта технология также соответствует требованиям завтрашнего дня.

0
ответ дан 24 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: