我有一个函数:的Python 2.7 argparse
def x(a,b,c)
我怎么能收集适合这种模式在命令行中的变量值?
python test.py --x_center a --y_center b c
(c
有,例如,3个,4个或更多的值)
我有一个函数:的Python 2.7 argparse
def x(a,b,c)
我怎么能收集适合这种模式在命令行中的变量值?
python test.py --x_center a --y_center b c
(c
有,例如,3个,4个或更多的值)
你可以做这样的事情是这样的:
import argparse
def x(x_center, y_center, values):
print "X center:", x_center
print "Y center:", y_center
print "Values:", values
def main():
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument('-x', '--x-center', type=float, required=True)
parser.add_argument('-y', '--y-center', type=float, required=True)
parser.add_argument('values', type=float, nargs='*')
args = parser.parse_args()
x(args.x_center, args.y_center, args.values)
if __name__ == '__main__':
main()
试试看:
$ python test.py --x-center 1 --y-center 2 3 4 5
X center: 1.0
Y center: 2.0
Values: [3.0, 4.0, 5.0]
要使用the argparse
module,通常需要从main
函数(以及一些调用它的样板)开始。在main
函数中,您需要create an ArgumentParser
。之后,你会想添加一些参数。
要添加参数,请使用add_argument
。
parser.add_argument('-x', '--x-center', type=float, required=True)
在这里,我们要添加一个选项,-x
,其中也有一个长选项变型,--x-center
。我们传给add_argument
的type
告诉它要求它是一个float
(如果它不是有效的浮点数,则会出错)。我们还告诉它是必需的;如果没有提供,错误。
parser.add_argument('values', type=float, nargs='*')
这只是像以前一样,但由于我们传递给它的字符串不以破折号开始,它假定它是不是一种选择,而是一个非选项参数。同样,我们告诉它我们想要float
s。 nargs
允许您指定它需要多个参数。 *
指定我们需要任何数量的参数。
最后,我们用parse_args
解析命令行。这返回一个我们要存储的对象。
然后,您可以访问该对象上的选项和参数,并在您的程序中执行相关的操作。
行x(args.x_center,args.y_center,args.values) 必须更改为 x(args.x,args.y,args.values)才能正确运行 –
@VasileiosAntoniou:您确定吗? ?该代码对我来说是按原样工作的,并使您的更改能够打破它。 – icktoofay
是的,我确定,但没关系。至少我们都有一个运行代码! :) –
有什么问题吗? –