gpt4 book ai didi

python - Argparse:未显示子解析器的默认值

转载 作者:太空狗 更新时间:2023-10-30 02:56:16 26 4
gpt4 key购买 nike

我遇到的问题是,在使用 argparse Python 包通过 add_argument 为子解析器指定参数时,我没有看到参数的任何默认值。

一些研究表明,您需要为每个 add_argument 步骤设置非空的帮助参数,并且您需要 ArgumentDefaultsHelpFormatter 作为 formatter_class,如下所述:

Argparse: Way to include default values in '--help'?

但是,这对我不起作用。我怀疑子解析器默认值以某种方式被抑制了。

这是一个例子:

from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter

parser = ArgumentParser(description="Sample script", formatter_class=ArgumentDefaultsHelpFormatter, version="sample version")

# Initialize Subparsers

subparsers = parser.add_subparsers(help="", dest="command")

# foo command

fooparser = subparsers.add_parser('foo', help='Do foo')
fooparser.add_argument('files', action='store', help='Foo file(s)' , nargs="+")
fooparser.add_argument("-5", "--Do5", type=int, required=False, dest="do5", help="Do 5 subprocedure.")
fooparser.add_argument("-n", "--topn", type=int, required=False, dest="topn", default=1, help="Show topn")

# bar command

barparser = subparsers.add_parser('bar', help='Do bar')
barparser.add_argument('files', action='store', help='Bar file(s)' , nargs="+")
barparser.add_argument("-mq", "--min-mq", type=int, required=False, default=2, dest="mq", help="Minimum MQ")
barparser.add_argument("-mi", "--min-identity", type=float, required=False, default=0.95, dest="identity", help="Minimum identity")

args = parser.parse_args()

最佳答案

添加子解析器时指定formatter_class

subparsers = parser.add_subparsers(help="", dest="command")

fooparser = subparsers.add_parser('foo', help='Do foo',
formatter_class=ArgumentDefaultsHelpFormatter)
...

barparser = subparsers.add_parser('bar', help='Do bar',
formatter_class=ArgumentDefaultsHelpFormatter)
...

python argparse_test.py --help foo 的输出:

usage: argparse_test.py foo [-h] [-5 DO5] [-n TOPN] files [files ...]

positional arguments:
files Foo file(s)

optional arguments:
-h, --help show this help message and exit
-5 DO5, --Do5 DO5 Do 5 subprocedure. (default: None)
-n TOPN, --topn TOPN Show topn (default: 1)

关于python - Argparse:未显示子解析器的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39997152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com