我想知道是否可以使用argparse为我编写的用于发出REST请求的脚本添加一个功能。目前的使用效果很好,看起来像这样:
$./prog.py -h
usage: prog.py [-h] [--headers [HEADER [HEADER ...]]]
[--queryparams [QUERY [QUERY ...]]] [--body [BODY]]
[METHOD] URL
我用这样的东西得到了这个用法:
parser = argparse.ArgumentParser()
position = self.parser.add_argument_group(
title='Positional arguments',
description='The only required argument is URL.'
)
position.add_argument(...)
position.add_argument(...)
我想要做的是添加第二组参数,这些参数与第一组完全互斥。
第二组的用法如下所示:
$./prog.py -h
usage: restcli.py [-h] request {refresh,update}
也就是说,如果request
是第一个参数,则唯一有效的选项是refresh
或update
。如果request
不是第一个参数,则假设我们正在处理原始用法。
我认为对于subparsers我几乎可以做到这一点,但它需要一个关键字来指定我想要原始的非请求解析器。在这种情况下的用法可能如下所示,但我想尽可能避免使用original
关键字:
$ ./prog.py -h
usage: prog.py [-h] {orignal,request}
提前感谢您提供的任何帮助。