-1

我想重新创建 [-A [-b value]],其中命令如下所示:

测试.py -A -b 123

看起来很简单,但我做不到。我最近的尝试是:

byte = subparser.add_parser("-A")
byte.add_argument("-b", type=int)
4

1 回答 1

0

虽然该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')

表示它已跳过-Aand -b(未为主解析器定义),并尝试将 '123' 解析为第一个位置。但它不在有效选择列表中。

因此,要使用子解析器,您需要将“A”指定为子解析器,而不是“-A”。

于 2018-04-06T00:04:39.397 回答