我想重新创建 [-A [-b value]],其中命令如下所示:
测试.py -A -b 123
看起来很简单,但我做不到。我最近的尝试是:
byte = subparser.add_parser("-A")
byte.add_argument("-b", type=int)
我想重新创建 [-A [-b value]],其中命令如下所示:
测试.py -A -b 123
看起来很简单,但我做不到。我最近的尝试是:
byte = subparser.add_parser("-A")
byte.add_argument("-b", type=int)
虽然该add_parser
命令接受“-A”,但解析器不能使用它。看帮助:
usage: ipython3 [-h] {-A} ...
positional arguments:
{-A}
optional arguments:
-h, --help show this help message and exit
子解析器实际上是一种特殊的positional
参数。对于主解析器,您已经有效地定义了
add_argument('cmd', choices=['-A'])
但是对于解析代码,'-A' 看起来像一个optional's
标志,就好像你已经定义了
add_argument('-A')
错误:
error: argument cmd: invalid choice: '123' (choose from '-A')
表示它已跳过-A
and -b
(未为主解析器定义),并尝试将 '123' 解析为第一个位置。但它不在有效选择列表中。
因此,要使用子解析器,您需要将“A”指定为子解析器,而不是“-A”。