我遇到的问题是,在使用 argparse Python 包通过 add_argument 为子解析器指定参数时,我没有看到任何参数的默认值。
一些研究表明,您需要为每个 add_argument 步骤设置非空帮助参数,并且需要 ArgumentDefaultsHelpFormatter 作为 formatter_class,如下所述:
然而,这对我不起作用。我怀疑以某种方式抑制了子解析器默认值。
下面是一个例子:
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", …Run Code Online (Sandbox Code Playgroud)