Быстрый и легкий диалог файлов в Python?
у меня есть простой скрипт, который парсит файл и загружает его содержимое в базу данных. Мне не нужен пользовательский интерфейс, но прямо сейчас я предлагаю пользователю проанализировать файл с помощью raw_input что является наиболее недружественным, особенно потому, что пользователь не может скопировать/вставить путь. Хотелось бы быстрый и простой способ представить диалоговое окно выбора файла для пользователя, он может выбрать файл, а затем он загружается в базу данных. (В моем случае использования, если они случайно выбрали неправильный файл, он не сможет выполнить синтаксический анализ, и не будет проблемой, даже если он был загружен в базу данных.)
import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()
этот код близок к тому, что я хочу, но он оставляет раздражающий пустой фрейм открытым (который не может быть закрыт, вероятно, потому, что я не зарегистрировал обработчик событий close).
мне не нужно использовать tkInter, но поскольку он находится в стандартной библиотеке Python, это хороший кандидат для быстрого и простого решения.
что быстрый и простой способ запросить файл или имя файла в a скрипт без какого-либо другого пользовательского интерфейса?
5 ответов:
Tkinter-это самый простой способ, если вы не хотите иметь каких-либо других зависимостей. Чтобы показать только диалог без каких-либо других элементов GUI, вы должны скрыть корневое окно с помощью
withdrawспособ:import tkinter as tk from tkinter import filedialog root = tk.Tk() root.withdraw() file_path = filedialog.askopenfilename()Python 2 вариант:
import Tkinter, tkFileDialog root = Tkinter.Tk() root.withdraw() file_path = tkFileDialog.askopenfilename()
попробовать wxPython:
import wx def get_path(wildcard): app = wx.App(None) style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST dialog = wx.FileDialog(None, 'Open', wildcard=wildcard, style=style) if dialog.ShowModal() == wx.ID_OK: path = dialog.GetPath() else: path = None dialog.Destroy() return path print get_path('*.txt')
Если вам не нужен пользовательский интерфейс или вы ожидаете, что программа будет работать в CLI, вы можете проанализировать путь к файлу в качестве аргумента. Это позволит вам использовать функцию автозаполнения вашего CLI, чтобы быстро найти нужный файл.
Это, вероятно, будет удобно только в том случае, если сценарий не является интерактивным, кроме ввода пути к файлу.
Проверьте EasyGUI, очень простой в использовании модуль, который должен сделать работу -http://easygui.sourceforge.net/
вы бы использовали функцию fileopenbox -http://www.ferg.org/easygui/easygui.html#-fileopenbox
Comments