我正在尝试创建一个解析器,可以接受任意选择列表(要绘制的内容),并为每个选择指定可选参数。我放弃了使用子子解析器的想法,而是使用了多个以下形式的参数:
--plot foo --xlim 0 10 --ylim -5 5 --plot bar --xlim -5 5 --ylim 0 10 --clim 1e24 1e27
但是我似乎无法通过nargs=2使附加操作正常工作:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='append', nargs=2, type=int)
_AppendAction(option_strings=['--foo'], dest='foo', nargs=2, const=None, default=None, type=<type 'int'>, choices=None, help=None, metavar=None)
>>> parser.parse_args("--foo 1 2 --foo 3 4")
usage: [-h] [--foo FOO FOO]
: error: unrecognized arguments: - - f o o 1 2 - - f o o 3 4
我希望能够得到一个列表或元组的列表。这种行为是否被argparse支持或者我在实现时出了什么问题?请注意,不要删除html标签。
parse_args
的?它们总是使用parse_args('--foo 1 2'.split())
。请注意最后的.split()
,它将一个字符串转换为字符串列表。 - Bakuriu