如何使用Python的argparse解析带有两个参数的可重复选项?

时间:2016-08-09 13:07:22

标签: python command-line-arguments argparse command-line-parsing

如何让argparse解析带有两个参数的选项,这两个参数可能存在多次?像这样:

$ cmd --repo origin here --repo other there --repo upstream url3

解析后的参数应该是可访问的,例如:

args.repo = [('origin', 'here'), ('other', 'there'), ('upstream', 'url3')]

2 个答案:

答案 0 :(得分:2)

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--repo', nargs=2, action='append')
parser.parse_args('--repo origin here --repo other there'.split())

结果:

Namespace(repo=[['origin', 'here'], ['other', 'there']])

答案 1 :(得分:1)

你应该使用追加行动。

来自argparse文档:

append - 存储一个列表,并将每个参数值附加到列表中。这对于允许多次指定选项很有用。

使用示例:

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', nargs='*', action='append')
>>> parser.parse_args('--foo 1 2 --foo 3 4'.split())

Namespace(foo=[['1', '2'], ['3', '4']])

来源:https://docs.python.org/3/library/argparse.html#action

您可能还想看看docopt项目,这是我最好的Python参数解析器包: