Tengo un script simple que analiza un archivo y carga su contenido en una base de datos. No necesito una interfaz de usuario, pero en este momento le estoy pidiendo al usuario que analice el archivo raw_input
que es más desagradable, especialmente porque el usuario no puede copiar / pegar la ruta. Me gustaría una manera rápida y fácil de presentar un cuadro de diálogo de selección de archivos al usuario, ellos pueden seleccionar el archivo y luego se carga en la base de datos. (En mi caso de uso, si eligieran el archivo incorrecto, fallaría el análisis y no sería un problema incluso si se cargara en la base de datos).
import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()
Este código está cerca de lo que quiero, pero deja un marco vacío molesto abierto (que no se puede cerrar, probablemente porque no he registrado un controlador de eventos de cierre).
No tengo que usar tkInter, pero como está en la biblioteca estándar de Python, es un buen candidato para la solución más rápida y sencilla.
¿Cuál es una forma rápida y fácil de solicitar un archivo o nombre de archivo en un script sin ninguna otra interfaz de usuario?
fuente
Respuestas:
Tkinter es la forma más sencilla si no desea tener otras dependencias. Para mostrar solo el diálogo sin ningún otro elemento GUI, debe ocultar la ventana raíz usando el
withdraw
método:Variante de Python 2:
fuente
tkinter.filedialog.askopenfilename()
import Tkinter as tk
yimport tkFileDialog
yfile_path = tkFileDialog.askopenfilename()
Puedes usar easygui :
Para instalar
easygui
, puede utilizarpip
:Es un solo módulo Python puro (
easygui.py
) que usatkinter
.fuente
Prueba con wxPython :
fuente
Si no necesita la IU o espera que el programa se ejecute en una CLI, puede analizar la ruta del archivo como argumento. Esto le permitiría utilizar la función de autocompletar de su CLI para encontrar rápidamente el archivo que necesita.
Esto probablemente solo sea útil si el script no es interactivo además de la entrada de ruta de archivo.
fuente
Echa un vistazo a EasyGUI, un módulo muy fácil de usar que debería hacer el trabajo: http://easygui.sourceforge.net/
Usaría la función fileopenbox detallada en esta página de documentación de la API: https://easygui.readthedocs.io/en/latest/api.html
fuente
pywin32
proporciona acceso a laGetOpenFileName
función win32. Del ejemplofuente
Usando tkinter (python 2) o Tkinter (python 3), de hecho es posible mostrar el diálogo de apertura de archivos (vea otras respuestas aquí). Sin embargo, tenga en cuenta que la interfaz de usuario de ese cuadro de diálogo está desactualizada y no corresponde a los cuadros de diálogo de apertura de archivos más nuevos disponibles en Windows 10.
Además, si está buscando la forma de incrustar el soporte de Python en su propia aplicación, pronto descubrirá que la biblioteca tkinter no es código fuente abierto y más aún, es una biblioteca comercial.
(Por ejemplo, la búsqueda de "precios de activetcl" lo llevará a esta página web: https://reviews.financesonline.com/p/activetcl/ )
Entonces, la biblioteca tkinter costará dinero para cualquier aplicación que desee incrustar Python.
Yo solo logré encontrar la biblioteca pythonnet:
(Licencia MIT)
Con el siguiente comando es posible instalar pythonnet:
Y aquí puede encontrar un ejemplo de trabajo para usar el diálogo de archivo abierto:
https://stackoverflow.com/a/50446803/2338477
Déjame copiar un ejemplo también aquí:
Si también echa de menos una interfaz de usuario más compleja, consulte la demostración echas de carpeta en pythonnet git.
No estoy seguro acerca de la portabilidad a otros sistemas operativos, no lo he intentado, pero .net 5 está planeado para ser portado a múltiples sistemas operativos (busque "plataformas .net 5", https://devblogs.microsoft.com/dotnet/introducing -net-5 / ) - por lo que esta tecnología también está preparada para el futuro.
fuente