首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 2.7 argparse

Python 2.7 argparse
EN

Stack Overflow用户
提问于 2011-12-02 12:17:28
回答 1查看 11.5K关注 0票数 13

我有一个函数:

def x(a,b,c)

如何从命令行收集符合此模式的变量值?

python test.py --x_center a --y_center b c (例如,c具有3、4或更多的值)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-02 12:25:57

你可以这样做:

代码语言:javascript
复制
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()

试试看:

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
parser.add_argument('-x', '--x-center', type=float, required=True)

在这里,我们添加了一个期权-x,它也有一个长期权变体--x-center。我们传递给add_argumenttype告诉它要求它是一个浮点数(如果它不是一个有效的float,就会出错)。我们还告诉argparse它是必需的;如果没有提供,就会出错。

代码语言:javascript
复制
parser.add_argument('values', type=float, nargs='*')

这和前面一样,但是因为我们传递给它的字符串不是以破折号开头的,所以它假定它不是一个选项,而是一个非选项参数。同样,我们告诉它我们需要floats。nargs允许您指定它需要多个参数。*指定我们需要任意数量的参数。

最后,我们使用parse_args解析命令行。这将返回一个我们将存储的对象。

然后,您可以访问该args对象上的选项和参数,并在程序中执行相关操作。

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8351732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档