2011-10-22 13 views
14

Ho un sacco di script scritti in Python. Li eseguo da un prompt dei comandi di Windows comeEsegui script Python dalla riga di comando di Windows, argomento non passato

c:> my_script.py arg1 arg2 arg3 

Questo funziona in tutti i computer e tutte le versioni di Windows da molti anni fa. Proprio ora questo si è rotto sul mio sistema Windows 7. Lo script è caricato ed eseguito. Ma nessuno degli argomenti è passato nello script.

Per illustrare questo, ho uno script chiamato py_echo.py:

from pprint import pprint as pp 
import sys 

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

Poi ho eseguirlo con l'argomento a, b, c. Nessuno di loro è passato.

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

Se corro python.exe esplicitamente, gli argomenti vengono passati correttamente

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'] 

Si stava lavorando prima. Inizia solo a rompere dopo aver disinstallato un vecchio programma Python interprete e moduli dal mio PC. Reinstallare Python non aiuta. Mi chiedo cosa posso fare per risolvere questo problema ??

Sono diventato molto dipendente dalle mie sceneggiature che ho costruito nel corso degli anni. Mi sento molto portatori di handicap quando si rompe :(

+1

Hai provato questo: http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from -t –

+0

Grazie a tutti. Ho trovato un altro thread su Perl punta alla stessa soluzione. http://stackoverflow.com/questions/444388/how-can-i-pass-command-line-arguments-via-file-association-in-vista-64 –

+0

Lo stesso per Python: http://stackoverflow.com/domande/2437167/problemi-esecuzione-python-scripts-in-prompt dei comandi specificamente-con-riga di comando. (La soluzione non ha funzionato su Windows 7, però). – bavaza

risposta

3

per spostare la risposta a SO (piuttosto che il collegamento in Jon's answer):

modificando la seguente due regist Ries in modo che siano passati gli argomenti insieme a Python:

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

Aggiungi %* a quello esistente "C:\PythonXX\python.exe" "%1", in modo che la chiave ora assomiglia: "C:\PythonXX\python.exe" "%1" %*.

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

Problemi correlati