在运行时传递变量

时间:2013-07-17 07:28:14

标签: python

我希望在运行时将一些变量传递给python

python add2values.py 123 124

然后在python脚本中它将获取这两个值并加在一起。

OR

python add2values.py a=123 b=124

然后在python脚本中它将获取这两个值并加在一起。

6 个答案:

答案 0 :(得分:11)

您可以使用sys.argv

test.py

#!/usr/bin/env python

import sys
total = int(sys.argv[1]) +  int(sys.argv[2])
print('Argument List: %s' % str(sys.argv))
print('Total : %d' % total)  

现在在脚本上方运行如下:

$ python test.py 123 124
Argument List: ['test.py', 'arg1', 'arg2', 'arg3']
Total : 247

答案 1 :(得分:3)

有几种方法可以处理命令行参数。

正如所建议的那样,sys.argv:来自命令行参数的字符串数组。如果要对不同类型的参数执行任意操作,请使用此选项。您可以将前两个参数转换为整数,并使用以下代码打印它们的总和:

import sys
n1 = sys.argv[1]
n2 = sys.argv[2]

print (int(n1) + int(n2))

当然,这不会检查用户是否输入字符串或列表或整数,并且存在TypeError的风险。但是,对于一系列命令行参数,这可能是您最好的选择 - 手动处理每个案例。

如果您的脚本/程序有固定的参数,并且您希望有更多的灵活性(短选项,长选项,帮助文本),那么值得查看optparseargparse(需要Python) 2.7或更高版本)模块。下面是一些代码片段,涉及从本网站上的实际问题中获取的这两个模块。

import argparse

parser = argparse.ArgumentParser(description='my_program')
parser.add_argument('-verbosity', help='Verbosity', required=True)
与早期版本的Python一起使用的

optparse具有类似的语法:

from optparse import OptionParser

parser = OptionParser()
...
parser.add_option("-m", "--month", type="int",
              help="Numeric value of the month", 
              dest="mon")

如果你喜欢类似C语法的话,甚至还有getopt ......

答案 2 :(得分:2)

argparse模块允许您轻松编写简单的命令行界面,并且非常灵活。它会处理诸如检查输入变量是否为您指定的正确类型之类的事情,并且只是让您更容易编写程序。

first example甚至演示了一个类似的程序,它将接受要求和的字符串列表。

答案 3 :(得分:1)

你可以这样做:

import sys
n1 = int(sys.argv[1])
n2 = int(sys.argv[2])

answer = n1 + n2
print answer

答案 4 :(得分:1)

我认为你的意思是通过命令行参数传递参数。代码:

import sys 
print int(sys.argv[1]) + int(sys.argv[2])

答案 5 :(得分:0)

使用sys模块。这将添加任何给出的参数:

import sys
print sum(map(int, sys.argv[1:]))
必须使用

map(),因为sys.argv中的所有元素都是字符串。我们还必须对列表进行切片,因为第一个元素是脚本名称。

运行时:

$ python myfile.py 123 124
247
$ python myfile.py 1 2 3
6