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

问题描述 投票:0回答:8

这是我的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

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

python windows python-2.7
8个回答
101
投票
  • 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)

34
投票

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

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'

17
投票

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

  • 模块应该在函数之外导入。
  • hello(sys.argv[2]) 需要缩进,因为它位于 if 语句内。
  • hello 有 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]))

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

python hello.py 1 1

15
投票

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

C:\Python27>python hello.py 1 1

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


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

显然,如果您将

if __name__
语句inside 放在函数中,则只有在运行该函数时才会对其进行求值。问题是:上述语句的要点是首先运行该函数。


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脚本的回答。


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 环境变量)。因此,请使用完整路径来验证代码。 比如:

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

0
投票

只需修复文件 .py 关联,您就可以运行带有参数的脚本,而无需调用 python.exe

  • 运行regedit.exe
  • 查找 HKEY_CLASSES_ROOT.py_auto_file\shell\ope
© www.soinside.com 2019 - 2024. All rights reserved.