2011-10-22 21 views
14

Tengo un conjunto de scripts escritos en Python. Yo les ejecutar desde un símbolo del sistema de Windows comoEjecutar scripts Python desde la línea de comandos de Windows, argumento no pasado

c:> my_script.py arg1 arg2 arg3 

Esto funciona en todos los ordenadores y todas las versiones de Windows desde hace muchos años. Justo ahora esto se ha roto en mi sistema Windows 7. El script se carga y ejecuta. Pero ninguno de los argumentos se pasan al script.

Para ilustrar esto, tengo un script llamado py_echo.py:

from pprint import pprint as pp 
import sys 

if __name__ =='__main__': 
    pp(sys.argv) 

Entonces se ejecutan con el argumento de a, b, c. Ninguno de ellos ha sido aprobado.

c:\Python27\Lib\site-packages>py_echo.py a b c 
['C:\\0\\usr\\bin\\py_echo.py'] 

Si me quedo python.exe explícitamente, los argumentos se pasan correctamente

c:\Python27\Lib\site-packages>python.exe c:\0\usr\bin\py_echo.py a b c 
['c:\\0\\usr\\bin\\py_echo.py', 'a', 'b', 'c'] 

Se estaba trabajando antes. Solo comenzó a descomponerse después de que desinstalé una gran cantidad de versiones anteriores de los intérpretes y módulos de Python de mi PC. La reinstalación de Python no ayuda. Me pregunto qué puedo hacer para arreglar esto?

Me he vuelto muy dependiente de mis scripts que construí a lo largo de los años. Me siento muy minusválidos cuando se rompe :(

+1

Has probado esto: http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from -t –

+0

Gracias a todos. Encontré otro hilo en Perl apunta a la misma solución. http://stackoverflow.com/questions/444388/how-can-i-pass-command-line-arguments-via-file-association-in-vista-64 –

+0

Lo mismo aquí para Python: http://stackoverflow.com/questions/2437167/issues-running-python-scripts-in-command-prompt-specific-with-command-line. (La solución no funcionó en Windows 7, sin embargo). – bavaza

Respuesta

3

para mover la respuesta a SO (en lugar del enlace en Jon's answer):

Modificación de los dos Regist siguiente Ries para que se pasan los argumentos junto a Python:

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command 
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command 

Añadir a la %*"C:\PythonXX\python.exe" "%1" existente, por lo que la clave ahora queda como: "C:\PythonXX\python.exe" "%1" %*.

Fuente: http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/

Cuestiones relacionadas