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



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



import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()


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



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



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

515   5  

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()

можно использовать easygui:

import easygui

path = easygui.fileopenbox()

установить easygui, вы можете использовать pip:

pip3 install easygui

это один чистый модуль Python (easygui.py), которая использует tkinter.

попробовать 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

    Ничего не найдено.