如何在 Python 中对 [-A[-b 值]] 执行 argparse 子解析
How to perform an argparse subparse for [-A[-b value]] in Python
我想重新创建 [-A [-b 值]],命令如下所示:
test.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
和 -b
(它们没有为主解析器定义),并试图将 '123' 解析为第一个位置。但它不在有效选择列表中。
所以要使用子解析器,您需要指定 'A' 作为子解析器,而不是 '-A'。
我想重新创建 [-A [-b 值]],命令如下所示:
test.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
和 -b
(它们没有为主解析器定义),并试图将 '123' 解析为第一个位置。但它不在有效选择列表中。
所以要使用子解析器,您需要指定 'A' 作为子解析器,而不是 '-A'。