2013-07-09 23 views
12

questo è il mio script python (hello.py):Come faccio a eseguire script Python usando argomenti a linea di comando di Windows

def hello(a,b): 
    print "hello and that's your sum:" 
    sum=a+b 
    print sum 
    import sys 

if __name__ == "__main__": 
hello(sys.argv[2]) 

il problema è che non può essere eseguito dal prompt dei comandi di Windows linea di, ho usato questo comando: C: \ Python27> ciao 1 1 , ma non ha funzionato, purtroppo, potrebbe qualcuno si prega di aiutare

+1

si prega di utilizzare la corretta formattazione del codice – thibauts

+0

Se "hello.py" è in una directory 'path', e l'esecuzione di' ciao 1 1' non passa gli argomenti della riga di comando, quindi l'associazione di file .py èrotto. Se CMD o PowerShell non trovano "hello.py", allora .PY non è in "PATHEXT".Non dovresti avere bisogno di eseguire 'python hello.py 1 1'. È fastidioso poiché richiede l'utilizzo di un percorso qualificato per hello.py o prima di passare alla sua directory. – eryksun

risposta

7

per eseguire il programma dalla riga di comando, è necessario chiamare l'interprete Python, come questo :

C:\Python27>python hello.py 1 1 

Se il codice si trova in un'altra directory, sarà necessario impostare il percorso binario python nella variabile di ambiente PATH, per poterlo eseguire anche. È possibile trovare le istruzioni dettagliate here.

+0

Oppure scrivi python my_full_path \ hello.py 1 1 – doctorlove

+0

grazie mille, l'ho anche usato in questo modo, ho definito le variabili di ambiente (PATH, path e pathext), senza successo – user2563817

+0

Assicurati di chiudere e riaprire la console che si sta utilizzando quando si apporta una modifica a PATH. – thibauts

2

tuo rientro è rotto. Questo dovrebbe risolvere il problema:

import sys 

def hello(a,b): 
    print 'hello and thats your sum:' 
    sum=a+b 
    print sum 

if __name__ == "__main__": 
    hello(sys.argv[1], sys.argv[2]) 

Ovviamente, se si mette il if __name__ dichiarazione all'interno la funzione, sarà sempre e solo essere valutato se si esegue tale funzione. Il problema è: il punto di detto estratto è quello di eseguire la funzione, in primo luogo.

+0

grazie mille per questo codice, ha funzionato, ma mi piacerebbe sapere cosa c'è di veramente sbagliato, e dove trovare maggiori dettagli su di esso per favore, grazie mille – user2563817

+1

ti ho detto cosa c'era che non andava. –

14
  • import sys fuori funzione ciao.
  • argomenti dovrebbero essere convertiti a int.
  • Le stringhe che contengono ' devono essere sottoposte a escape o devono essere rilevate da ".
  • Hai richiamato il programma con python hello.py <some-number> <some-number> nella riga di comando?

import sys 

def hello(a,b): 
    print "hello and that's your sum:", a + b 

if __name__ == "__main__": 
    a = int(sys.argv[1]) 
    b = int(sys.argv[2]) 
    hello(a, b) 
+0

'import' non in primo livello - non è raccomandato. Dovrebbe essere posizionato prima di 'def ciao' – ElmoVanKielmo

+0

@ElmoVanKielmo, grazie per un consiglio. Ho cambiato il codice. – falsetru

+0

L'uso di 'print' senza parentesi non è consigliabile in Python 2.7. Dovresti mirare alla compatibilità con Python 3;) – Agostino

1
import sys 

def hello(a, b): 
    print 'hello and that\'s your sum: {0}'.format(a + b) 

if __name__ == '__main__': 
    hello(int(sys.argv[1]), int(sys.argv[2])) 

Inoltre vedere @thibauts risposta su come chiamare script python.

1

Ecco tutte le risposte precedenti riassunte:

  • moduli devono essere importati al di fuori delle funzioni.
  • ciao (sys.argv [2]) deve essere rientrato poiché si trova all'interno di un'istruzione if.
  • ciao ha 2 argomenti quindi è necessario chiamare 2 argomenti.
  • quanto riguarda il richiamo della funzione dal terminal, è necessario chiamare python .py ...

Il codice dovrebbe essere simile a questo:

import sys 
def hello(a, b): 
    print "hello and that's your sum:" 
    sum = a+b 
    print sum 

if __name__== "__main__": 
    hello(int(sys.argv[1]), int(sys.argv[2])) 

quindi eseguire il codice con questo comando:

python hello.py 1 1 
Problemi correlati