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

use*_*817 42 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])
Run Code Online (Sandbox Code Playgroud)

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

C:\Python27>hello 1 1
Run Code Online (Sandbox Code Playgroud)

但遗憾的是它没有用,有人可以帮忙吗?

fal*_*tru 43

  • import sys 超出你好的功能.
  • 参数应该转换为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)
Run Code Online (Sandbox Code Playgroud)

  • `import`不在顶级 - 不推荐.应该放在`def hello`之前 (3认同)
  • 在 Python 2.7 中不建议使用不带括号的 `print`。您应该以与 Python 3 兼容为目标;) (2认同)

thi*_*uts 12

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

C:\Python27>python hello.py 1 1
Run Code Online (Sandbox Code Playgroud)

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


est*_*ezg 9

我发现这个线程正在寻找有关处理参数的信息;这个简单的指南太酷了:

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
Run Code Online (Sandbox Code Playgroud)

像这样运行:

python myScript.py --opt2 = 'hi'
Run Code Online (Sandbox Code Playgroud)


小智 7

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

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

该代码应如下所示:

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]))
Run Code Online (Sandbox Code Playgroud)

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

python hello.py 1 1
Run Code Online (Sandbox Code Playgroud)


Nil*_*ner 5

你的缩进被破坏了。这应该可以修复它:

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])
Run Code Online (Sandbox Code Playgroud)

显然,如果您将if __name__语句放入函数内,则只有在运行该函数时才会对其进行求值。问题是:所述语句的要点是首先运行该函数。