Eu tenho um script simples que analisa um arquivo e carrega seu conteúdo em um banco de dados. Não preciso de uma IU, mas agora estou solicitando ao usuário que o arquivo analise usando, o raw_input
que é mais hostil, especialmente porque o usuário não pode copiar / colar o caminho. Gostaria de uma maneira rápida e fácil de apresentar ao usuário uma caixa de diálogo de seleção de arquivos, eles podem selecionar o arquivo e, em seguida, carregá-lo no banco de dados. (No meu caso de uso, se eles escolhessem o arquivo errado, haveria falha na análise e não seria um problema, mesmo se fosse carregado no banco de dados.)
import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()
Este código está perto do que eu quero, mas deixa um quadro vazio irritante aberto (que não pode ser fechado, provavelmente porque eu não registrei um manipulador de evento de fechamento).
Não preciso usar tkInter, mas, como está na biblioteca padrão do Python, é um bom candidato para a solução mais rápida e fácil.
Qual é a maneira rápida e fácil de solicitar um arquivo ou nome de arquivo em um script sem qualquer outra IU?
fonte
Respostas:
O Tkinter é a maneira mais fácil se você não quiser ter outras dependências. Para mostrar apenas a caixa de diálogo sem quaisquer outros elementos da GUI, você deve ocultar a janela raiz usando o
withdraw
método:Variante do Python 2:
fonte
tkinter.filedialog.askopenfilename()
import Tkinter as tk
andimport tkFileDialog
andfile_path = tkFileDialog.askopenfilename()
Você pode usar o easygui :
Para instalar
easygui
, você pode usarpip
:É um único módulo Python puro (
easygui.py
) que usatkinter
.fonte
Experimente com wxPython :
fonte
Se você não precisa da IU ou espera que o programa seja executado em uma CLI, você pode analisar o caminho do arquivo como um argumento. Isso permitirá que você use o recurso de preenchimento automático de sua CLI para encontrar rapidamente o arquivo de que precisa.
Isso provavelmente só seria útil se o script não fosse interativo além da entrada do caminho do arquivo.
fonte
Confira EasyGUI, um módulo muito fácil de usar que deve fazer o trabalho - http://easygui.sourceforge.net/
Você usaria a função fileopenbox detalhada nesta página de documentação da API - https://easygui.readthedocs.io/en/latest/api.html
fonte
pywin32
fornece acesso àGetOpenFileName
função win32. Do exemplofonte
Usando tkinter (python 2) ou Tkinter (python 3) é realmente possível exibir a caixa de diálogo de abertura de arquivo (veja outras respostas aqui). Observe, entretanto, que a interface do usuário dessa caixa de diálogo está desatualizada e não corresponde às caixas de diálogo de abertura de arquivo mais recentes disponíveis no Windows 10.
Além disso - se você está procurando uma maneira de incorporar o suporte a python em seu próprio aplicativo - você descobrirá logo que a biblioteca tkinter não é um código-fonte aberto e ainda mais - é uma biblioteca comercial.
(Por exemplo, a pesquisa por "preços ativetcl" levará você a esta página da web: https://reviews.financesonline.com/p/activetcl/ )
Portanto, a biblioteca tkinter custará dinheiro para qualquer aplicativo que queira incorporar Python.
Eu mesmo consegui encontrar a biblioteca pythonnet:
(Licença MIT)
Usando o seguinte comando, é possível instalar o pythonnet:
E aqui você pode encontrar um exemplo prático para usar a caixa de diálogo de arquivo aberto:
https://stackoverflow.com/a/50446803/2338477
Deixe-me copiar um exemplo também aqui:
Se você também sente falta de uma interface de usuário mais complexa - consulte a pasta Demo em pythonnet git.
Não tenho certeza sobre a portabilidade para outros sistemas operacionais, não tentei, mas .net 5 está planejado para ser transferido para vários sistemas operacionais (pesquise ".net 5 plataformas", https://devblogs.microsoft.com/dotnet/introducing -net-5 / ) - portanto, esta tecnologia também é compatível com o futuro.
fonte