如何用argparse创建"对列表"类型的参数?

Man*_*lva 7 python argparse

我需要让我的python脚本的最终用户输入类似于:

script.py -sizes <2,2> <3,3> <6,6>
Run Code Online (Sandbox Code Playgroud)

其中每个-sizes选项元素都是一对正整数.我怎样才能实现这一目标argparse

che*_*ner 11

定义自定义类型:

def pair(arg):
    # For simplity, assume arg is a pair of integers
    # separated by a comma. If you want to do more
    # validation, raise argparse.ArgumentError if you
    # encounter a problem.
    return [int(x) for x in arg.split(',')]
Run Code Online (Sandbox Code Playgroud)

然后使用它作为常规参数的类型:

p.add_argument('--sizes', type=pair, nargs='+')
Run Code Online (Sandbox Code Playgroud)

然后

>>> p.parse_args('--sizes 1,3 4,6'.split())
Namespace(sizes=[[1, 3], [4, 6]])
Run Code Online (Sandbox Code Playgroud)