Как запустить Python script с помощью аргументов в командной строке Windows

Это мой скрипт на python hello.py:

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

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

Проблема в том, что он не может быть запущен из командной строки Windows, я использовал эту команду:

C:\Python27>hello 1 1

Но, к сожалению, это не сработало, может кто-нибудь помочь?

Ответ 1

  • import sys из функции hello.
  • аргументы должны быть преобразованы в int.
  • Строковый литерал, содержащий ', должен быть экранирован или должен быть переназначен ".
  • Вы вызывали программу с помощью python hello.py <some-number> <some-number> в командной строке?

import sys

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

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

Ответ 2

Чтобы выполнить вашу программу из командной строки, вам нужно вызвать интерпретатор python, например:

C:\Python27>python hello.py 1 1

Если код находится в другом каталоге, вам нужно будет установить двоичный путь python в переменной среды PATH, чтобы иметь возможность запускать его. Вы можете найти подробные инструкции здесь.

Ответ 3

Ниже приведены все предыдущие ответы:

  • Модули
  • должны быть импортированы вне функций.
  • hello (sys.argv [2]) должен быть отступом, поскольку он находится внутри оператора if.
  • hello имеет 2 аргумента, поэтому вам нужно вызвать 2 аргумента.
  • чтобы вызвать функцию из терминала, вам нужно вызвать python.py...

Код должен выглядеть так:

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

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

Затем запустите код с помощью этой команды:

python hello.py 1 1

Ответ 4

Ваш отступ сломан. Это должно исправить это:

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

Очевидно, что если вы поместите инструкцию if __name__ внутри, она будет только когда-либо оценена, если вы запустите эту функцию. Проблема заключается в следующем: точка указанного утверждения заключается в том, чтобы запустить функцию в первую очередь.

Ответ 5

import sys

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

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

Кроме того, см. @thibauts ответ о том, как вызвать python script.