如何让我的 argparse 子解析器格式像在列表中而不是在一行中?

How to get my argparse subparsers format be like in a list and not on one single line?

我有这个代码作为测试

import argparse


def main():
    parser = argparse.ArgumentParser("test", description="subparser help test")
    commands = parser.add_subparsers(dest="command", title="Commands")

    subparser_a = commands.add_parser("parser_a", description="description_of_parser_a")
    subparser_a.add_argument("--foo")
    subparser_a.add_argument("--bar")

    subparser_b = commands.add_parser("parser_b", description="description_of_parser_b")
    subparser_b.add_argument("--foo-b")
    subparser_b.add_argument("--bar-b")

    args = parser.parse_args()


if __name__ == '__main__':
    main()

但是当我运行python test.py --help时,它显示的是这样的

usage: test [-h] {parser_a,parser_b} ...

subparser help test

optional arguments:
  -h, --help           show this help message and exit

Commands:
  {parser_a,parser_b}

但我希望它打印的内容是这样的

usage: test [-h] {parser_a,parser_b} ...

subparser help test

optional arguments:
  -h, --help           show this help message and exit

Commands:
  parser_a             description_of_parser_a
  parser_b             description_of_parser_b

他们有任何解决方法或方法吗?

您必须像下面这样更改您的代码。 description= -> help=add_parser

import argparse


def main():
    ...

    subparser_a = commands.add_parser("parser_a", help="description_of_parser_a")
    
    ...

    subparser_b = commands.add_parser("parser_b", help="description_of_parser_b")
    ...
    
    args = parser.parse_args()


if __name__ == '__main__':
    main()