我想知道是否可以使用 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
or update
。如果request
不是第一个参数,则假设我们正在处理原始用法。
我认为使用子解析器我几乎可以做到这一点,但它需要一个关键字来指定我想要原始的非请求解析器。这种情况下的用法可能如下所示,但我想尽可能避免使用该original
关键字:
$ ./prog.py -h
usage: prog.py [-h] {orignal,request}
提前感谢您提供的任何帮助。