web-dev-qa-db-fra.com

Comment exécuter Python en utilisant des arguments dans la ligne de commande Windows

Ceci est mon python hello.py script:

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

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

Le problème est qu'il ne peut pas être exécuté à partir de l'invite de la ligne de commande Windows, j'ai utilisé cette commande:

C:\Python27>hello 1 1

Mais cela n'a malheureusement pas fonctionné. Quelqu'un peut-il aider, s'il vous plaît?

40
user2563817
  • import sys hors fonction bonjour.
  • les arguments doivent être convertis en int.
  • Littéral de chaîne contenant ' devrait être évité ou devrait être maîtrisé par ".
  • Avez-vous appelé le programme avec python hello.py <some-number> <some-number> en ligne de commande?

import sys

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

if __== "__main__":
    a = int(sys.argv[1])
    b = int(sys.argv[2])
    hello(a, b)
39
falsetru

Pour exécuter votre programme à partir de la ligne de commande, vous devez appeler l'interpréteur python, comme ceci:

C:\Python27>python hello.py 1 1

Si votre code réside dans un autre répertoire, vous devrez définir le chemin binaire python dans votre variable d’environnement PATH). Vous pourrez également trouver des instructions détaillées ici .

12
thibauts

Voici toutes les réponses précédentes résumées:

  • les modules doivent être importés en dehors des fonctions.
  • hello (sys.argv [2]) doit être mis en retrait car il se trouve dans une instruction if.
  • bonjour a 2 arguments, vous devez donc appeler 2 arguments.
  • pour appeler la fonction depuis un terminal, vous devez appeler python .py ...

Le code devrait ressembler à ceci:

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

Puis exécutez le code avec cette commande:

python hello.py 1 1
7
C. Glass

Votre indentation est cassée. Cela devrait résoudre le problème:

import sys

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

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

Évidemment, si vous mettez l'instruction if __name__ à l'intérieur de la fonction, celle-ci ne sera évaluée que si vous exécutez cette fonction. Le problème est le suivant: le but de cette déclaration est d'exécuter la fonction en premier lieu.

4
Nils Werner
import sys

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

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

De plus, @thibauts vous explique comment appeler le script python.

1
ElmoVanKielmo