如何使用 Python 的 argparse 解析带有两个参数的可重复选项?
How to parse a repeatable option with two arguments with Python’s argparse?
如何让 argparse
解析带有两个参数的选项,这两个参数可能存在多次?像这样:
$ cmd --repo origin here --repo other there --repo upstream url3
并且解析后的参数应该可以访问,例如:
args.repo = [('origin', 'here'), ('other', 'there'), ('upstream', 'url3')]
您应该使用附加操作。
来自 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 参数解析器包:
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']])
如何让 argparse
解析带有两个参数的选项,这两个参数可能存在多次?像这样:
$ cmd --repo origin here --repo other there --repo upstream url3
并且解析后的参数应该可以访问,例如:
args.repo = [('origin', 'here'), ('other', 'there'), ('upstream', 'url3')]
您应该使用附加操作。
来自 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 参数解析器包:
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']])