如何在Windows命令行中使用参数运行Python脚本

时间:2013-07-09 09:11:05

标签: python windows python-2.7

这是我的python hello.py脚本:

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

问题是它无法从Windows命令行提示符运行,我使用了这个命令:

C:\Python27>hello 1 1

但不幸的是,它不起作用,有人可以帮忙吗?

7 个答案:

答案 0 :(得分:35)

  • import sys出了hello函数。
  • 参数应转换为int。
  • 包含'的字符串文字应该被转义,或者应由"进行转发。
  • 您是否在命令行中使用python hello.py <some-number> <some-number>调用该程序?

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)

答案 1 :(得分:10)

要从命令行执行程序,必须调用python解释器,如下所示:

C:\Python27>python hello.py 1 1

如果您的代码驻留在另一个目录中,则必须在PATH环境变量中设置python二进制路径,以便能够运行它。您可以找到详细说明here

答案 2 :(得分:6)

以下是所有以前的答案总结:

  • 模块应该在函数之外导入。
  • hello(sys.argv [2])需要缩进,因为它在if语句中。
  • 你好有2个参数,所以你需要调用2个参数。
  • 至于从终端调用函数,你需要调用python .py ...

代码应如下所示:

python hello.py 1 1

然后使用以下命令运行代码:

{{1}}

答案 3 :(得分: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__语句放在函数中,那么只有在运行该函数时才会对它进行评估。问题是:所述声明的重点是首先运行该函数。

答案 4 :(得分:4)

我发现此线程正在寻找有关处理参数的信息; this easy guide真酷:

import argparse

parser = argparse.ArgumentParser(description='Script so useful.')
parser.add_argument("--opt1", type=int, default=1)
parser.add_argument("--opt2")

args = parser.parse_args()

opt1_value = args.opt1
opt2_value = args.opt2

运行方式:

python myScript.py --opt2 = 'hi'

答案 5 :(得分: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]))

另外请参阅@thibauts关于如何调用python脚本的答案。

答案 6 :(得分:0)

代码中存在多个错误。

  1. “ import sys”行应位于函数外部,因为该函数本身是通过使用sys函数获取的参数调用的。
  2. 如果想要正确的总和,则应将参数(字符串)转换为浮点数。将总和行更改为-> sum = float(a)+ float(b)。
  3. 由于尚未为任何函数参数定义任何默认值,因此有必要在调用函数时传递两个参数-> hello(sys.argv [2],sys.argv [2] )

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

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

此外,使用“ C:\ Python27> hello 1 1”运行代码看起来也不错,但是您必须确保该文件位于Python知道的目录之一(PATH env变量)中。因此,请使用完整路径来验证代码。 像这样:

C:\Python34>python C:\Users\pranayk\Desktop\hello.py 1 1