2

我想知道是否可以使用 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是第一个参数,那么唯一有效的选项是refreshor update。如果request不是第一个参数,则假设我们正在处理原始用法。

我认为使用子解析器我几乎可以做到这一点,但它需要一个关键字来指定我想要原始的非请求解析器。这种情况下的用法可能如下所示,但我想尽可能避免使用该original关键字:

$ ./prog.py -h
usage: prog.py [-h] {orignal,request} 

提前感谢您提供的任何帮助。

4

0 回答 0