如何将 `--foo 1 --foo 2` 样式参数与 Python argparse 一起使用?
How to use `--foo 1 --foo 2` style arguments with Python argparse?
nargs='+'
没有按我预期的方式工作:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument("--name", dest='names', nargs='+')
_StoreAction(option_strings=['--name'], dest='names', nargs='+', const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--name foo --name bar'.split())
Namespace(names=['bar'])
我可以 "fix" 通过使用 --name foo bar
,但这与我使用的其他工具不同,我宁愿更明确。 argparse
支持吗?
您想使用 action='append'
而不是 nargs='+'
:
>>> parser.add_argument("--name", dest='names', action='append')
_AppendAction(option_strings=['--name'], dest='names', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--name foo --name bar'.split())
Namespace(names=['foo', 'bar'])
nargs
如果您只想采用一系列位置参数,则使用 action='append'
如果您希望能够多次采用标志并将结果累积到一个列表。
nargs='+'
没有按我预期的方式工作:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument("--name", dest='names', nargs='+')
_StoreAction(option_strings=['--name'], dest='names', nargs='+', const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--name foo --name bar'.split())
Namespace(names=['bar'])
我可以 "fix" 通过使用 --name foo bar
,但这与我使用的其他工具不同,我宁愿更明确。 argparse
支持吗?
您想使用 action='append'
而不是 nargs='+'
:
>>> parser.add_argument("--name", dest='names', action='append')
_AppendAction(option_strings=['--name'], dest='names', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--name foo --name bar'.split())
Namespace(names=['foo', 'bar'])
nargs
如果您只想采用一系列位置参数,则使用 action='append'
如果您希望能够多次采用标志并将结果累积到一个列表。