Как запустить 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.