79

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

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

4

7 回答 7

80
  • 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)
于 2013-07-09T09:18:18.033 回答
19

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

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'
于 2020-02-11T19:40:30.457 回答
16

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

  • 模块应该在函数之外导入。
  • 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
于 2017-07-03T19:17:01.050 回答
14

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

C:\Python27>python hello.py 1 1

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

于 2013-07-09T09:14:14.720 回答
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__语句放在函数中,则只有在运行该函数时才会对其进行评估。问题是:所述语句的重点是首先运行该函数。

于 2013-07-09T09:16:57.713 回答
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 脚本的答案。

于 2013-07-09T09:19:09.787 回答
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
于 2019-11-29T11:20:05.100 回答