2008-09-27 10 views
43

Me gustaría arrastrar y soltar mi archivo de datos en una secuencia de comandos de Python y que procese el archivo y genere resultados. La secuencia de comandos de Python acepta el nombre del archivo de datos como un parámetro de línea de comandos, pero Windows Explorer no permite que la secuencia de comandos sea un destino de colocación.Arrastrar y soltar en la secuencia de comandos de Python en Windows Explorer

¿Hay algún tipo de configuración que deba hacerse en algún lugar para este trabajo?

+0

Creo que funciona si instaló Python desde el instalador de instalación de Windows (básicamente, si puede hacer doble clic para ejecutar un script de Python) –

Respuesta

49

Sure. Desde mindless technology article called "Make Python Scripts Droppable in Windows", puede agregar un controlador de acceso mediante la adición de una clave de registro:

Aquí hay un archivo de importación de registro que puede usar para hacer esto. Copie siguiendo en un archivo .reg y ejecútelo (asegúrese de que sus extensiones .py están mapeadas en Python.File).

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler] 
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}" 

Esto hace que las secuencias de comandos de Python utilizan el controlador de caída de WSH, que es compatible con nombres de archivo largos. Para usar el manejador de nombre de archivo corto, reemplace el GUID con 86C86720-42A0-1069-A2E8-08002B30309D.

Un comentario en ese puesto indica que se puede permitir dejar caer en "ningún archivo de consola Python (.pyw)" o "archivos compilados Python (.pyc)" mediante el uso de las Python.NoConFile y Python.CompiledFile clases.

+0

¿Dónde se suelta el archivo? En la ventana de la consola? O en el icono del archivo de script? No estoy siguiendo. – Greg

+3

En el icono del archivo de secuencia de comandos. –

+1

¿Puede hacer que imprima el error si se cuelga? – Norfeldt

5

Intente utilizar py2exe. Utilice py2exe para convertir su secuencia de comandos python en un ejecutable de Windows. Debería poder arrastrar y soltar archivos de entrada en su secuencia de comandos en el Explorador de Windows. También debería poder crear un acceso directo en su escritorio y colocar archivos de entrada en él. Y si su secuencia de comandos python puede tomar una lista de archivos, podrá arrastrar y soltar varios archivos en su secuencia de comandos (o acceso directo).

+1

Este enfoque también funciona con PyInstaller. – franzlorenzon

24

escribir un simple script de shell (file.bat)

"c:\Python27\python.exe" yourprogram.py %1 

donde% 1 representa el argumento de abetos que se pasa a la secuencia de comandos.

Ahora arrastre% suelte sus archivos de destino en el icono file.bat.

+7

"c: \ Python27 \ python.exe" yourprogram.py% * Para capturar varios archivos arrastrados – sjtaheri

1

Crea un atajo del archivo. En caso de que no tenga archivos .py de python abiertos por defecto, vaya a las propiedades del acceso directo y edite el destino del acceso directo para incluir la versión de Python que está utilizando. Por ejemplo:

Objetivo: ruta \ Python26 \ python.exe < destino de acceso directo>

les dejo esto porque yo no quiero editar el registro y la solución .bat no funcionó: C para mi.

2

Con un python instalado, al menos 2.6.1, puede simplemente arrastrar y soltar cualquier archivo en un script de python.

import sys 
droppedFile = sys.argv[1] 
print droppedFile 

sys.argv[0] es el script en sí. sys.argv[n+1] son los archivos que ha eliminado.

+0

Esta respuesta es la más simple y más fácil. Además, probado para trabajar con py2exe (usando Python 3.3) después de que se haya convertido a un exe. – Splic

Cuestiones relacionadas