2011-11-01 8 views
6
import sys 

    print sys.argv[1] 

hi,Python non leggerà sys.argv

questo può sembrare molto semplice, ma non riesco a Python per leggere in qualsiasi cosa dalla riga di comando. Questo è il codice di cui sopra e quello che ho tipo è:

myfile.py helloworld 

e cosa ottengo indietro è:

IndexError: list index out of range 

tutto sembrava funzionare una volta per me, ma non funziona più, e io' Ho provato a disinstallare e reinstallare Python e ancora non funziona.

Quindi la mia domanda è, sto facendo qualcosa di sbagliato? o ho appena rotto Python?

Grazie per qualsiasi aiuto

Usando: Windows 7 Python 2.7.2

+0

Cosa succede quando si appena 'sys.argv' di stampa? E funziona, quando si chiama il file tramite 'python.exe myfile.py helloworld'? – poke

+0

ah, grazie per le vostre risposte, è riuscito a farlo funzionare. ha avuto un errore molto stupido, non ha aggiunto python al percorso nelle variabili di sistema – user1024028

+0

Per coloro che hanno problemi a passare argomenti a uno script in Windows senza doverlo anteporre a una chiamata a Python (ad esempio 'python foo.py a' funziona ma' foo. py a' no,) scorre la prima risposta. – eenblam

risposta

5

Sei sicuro che si sta chiamando lo script python il modo in cui pensi di essere?

#!/usr/bin/python 
import sys 

if len(sys.argv) < 2: 
    print "you did not give any arguments\n" 
else: 
    print sys.argv[1] 

rendimenti:

$ ./foo.py 
you did not give any arguments 

$ ./foo.py hello_world 
hello_world 
$ 
+0

grazie per la tua risposta, è riuscito a farlo funzionare – user1024028

11

avviare l'editor di registro (regedit). Impostare la python26.exe \ shell \ open \ command chiave HKEY_CLASSES_ROOT \ Applications \ a: "C:\Python26\python26.exe" "%1" %*

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

+2

wow, questa omissione di registro ci ha fatto un bit oggi, stavamo cercando di bilanciare un Python 2.7 Anaconda e l'installazione 3.4 fianco a fianco. L'installer 3.4 ha omesso quell'argomento '% *' ma abbiamo dovuto impostarlo sia per la chiave 'HKEY_CLASSES_ROOT \ Applications \ pythonxx.exe \ shell \ open \ command' che per il comando' HKEY_CLASSES_ROOT \ py_auto_file \ shell \ open \ Tasto ' – jxramos

+0

Grazie per la risposta –