Python 在帮助文本中重新排列argparse组

Python 在帮助文本中重新排列argparse组,python,command-line-interface,argparse,Python,Command Line Interface,Argparse,我有一个相当复杂的CLI,带有argparse,它有多个子解析器用于不同的操作。为了代码的易读性,我将每个动作分为一个函数,在本例中,我仅使用其中一个函数: def\u parse\u args\u one( 子parser:argparse.\u子parser操作, 父解析器:argparse.ArgumentParser, ): “”“命令一的子parser。”“” parser=subparsers.add\u parser( “一个”, parents=[parent_parser],

我有一个相当复杂的CLI,带有
argparse
,它有多个子解析器用于不同的操作。为了代码的易读性,我将每个动作分为一个函数,在本例中,我仅使用其中一个函数:

def\u parse\u args\u one(
子parser:argparse.\u子parser操作,
父解析器:argparse.ArgumentParser,
):
“”“命令一的子parser。”“”
parser=subparsers.add\u parser(
“一个”,
parents=[parent_parser],
add_help=False,
description=“命令一描述”,
)
group\u required=解析器。添加参数组(“required”)
组\必需。添加\参数(
“-i”、“--input”、type=str、required=True、help=“input help”,
)
group\u optional=解析器。添加参数组(“optional”)
组\可选。添加\参数(
“-o”,“--output”,type=str,help=“output help”,
)
为了使帮助文本更清晰,我想将所有参数分为以下几组:

  • Required
    :当前操作的所有必需参数
  • 可选
    :所有可选参数
  • Common
    :在每个操作中使用的公共参数
我在主/父参数解析器中对它们进行分组,并在顶级帮助文本中不显示一个非常奇怪的
帮助
设置:

def parse_args():
“”“参数分析器。”“”
parser=argparse.ArgumentParser(
prog=“customname”,description=“My custom CLI”,add\u help=False,
)
parser.add_参数(
“-h”,“--help”,action=“help”,默认值=argparse.SUPPRESS,help=argparse.SUPPRESS
)
parser=argparse.ArgumentParser(add\u help=False)
group=父解析器。添加参数组(“公共”)
group.add_参数(
“-h”,
“--帮助”,
action=“help”,
默认值=argparse.SUPPRESS,
help=“显示此帮助消息并退出”,
)
group.add_参数(
“-V”,
“--版本”,
action=“version”,
version=“%(程序)s 0.0.1”,
help=“显示%(程序)的版本号并退出”,
)
group.add_参数(
“-v”,
“--冗长”,
action=“store\u true”,
help=“将程序输出设置为详细[默认值:安静]”,
)
subparsers=parser.add_subparsers(title=“Commands”,dest=“command”)
_parse_args_one(子解析器、父解析器)
args=parser.parse_args()
返回参数
对于
main
帮助文本,我获得了所需的输出:

usage: customname {one} ...

My custom CLI

Commands:
  {one}
不幸的是,对于
操作
帮助文本,我首先列出了
通用
组,最后没有列出所需的组:

usage: customname one [-h] [-V] [-v] -i INPUT [-o OUTPUT]

Command one descrpition

# This should be last (after Required and Optional)
Common:
  -h, --help            show this help message and exit
  -V, --version         show customname one\'s version number and exit
  -v, --verbose         set program output to verbose [default: quiet]

Required:
  -i INPUT, --input INPUT
                        Input help

Optional:
  -o OUTPUT, --output OUTPUT
                        Output help
有没有办法重新排列这些组的顺序?
提前感谢

帮助由
解析器创建。格式化\u帮助
。如果需要,您可以编写您的版本。请注意,它在
解析器上进行迭代。_action_groups
列表。因此,列表中的组顺序决定了输出。最初,该列表有两个组,默认的“位置”和“可选”。其余的都是创建它们的外接程序。当使用
父类时,在创建(子)解析器时,首先添加父类中的组。谢谢。我看到你有一个类似的问题。如果你不想补充一个小问题,我很乐意接受。