如何解决重新排列帮助文本中的argparse组
我有一个相当复杂的CLI,带有argparse
,它具有用于不同操作的多个子解析器。为了使代码清晰易读,我将每个动作分为一个功能,在此示例中,我仅使用其中的一个功能:
def _parse_args_one(
subparsers: argparse._SubParsersAction,parent_parser: argparse.ArgumentParser,):
"""Subparser for command one."""
parser = subparsers.add_parser(
"one",parents=[parent_parser],add_help=False,description="Command one descrpition",)
group_required = parser.add_argument_group("Required")
group_required.add_argument(
"-i","--input",type=str,required=True,help="Input help",)
group_optional = parser.add_argument_group("Optional")
group_optional.add_argument(
"-o","--output",help="Output help",)
为了使帮助文本更清晰易懂,我想将所有参数分为以下几组:
-
Required
:当前操作的所有必需参数 -
Optional
:所有可选参数 -
Common
:每项操作中使用的通用参数
我将所有这些分组在main / parent参数解析器中,并且有一个非常奇怪的help
设置,使其不会显示在顶级帮助文本中:
def parse_args():
"""Argument parser."""
parser = argparse.ArgumentParser(
prog="customname",description="My custom CLI",)
parser.add_argument(
"-h","--help",action="help",default=argparse.SUPPRESS,help=argparse.SUPPRESS
)
parent_parser = argparse.ArgumentParser(add_help=False)
group = parent_parser.add_argument_group("Common")
group.add_argument(
"-h",help="show this help message and exit",)
group.add_argument(
"-V","--version",action="version",version="%(prog)s 0.0.1",help="show %(prog)s's version number and exit",)
group.add_argument(
"-v","--verbose",action="store_true",help="set program output to verbose [default: quiet]",)
subparsers = parser.add_subparsers(title="Commands",dest="command")
_parse_args_one(subparsers,parent_parser)
args = parser.parse_args()
return args
对于main
帮助文本,我得到了所需的输出:
usage: customname {one} ...
My custom CLI
Commands:
{one}
不幸的是,对于action
帮助文本,我将Common
组列在第一位,而不是最后一位:
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
是否可以重新排列这些组的顺序? 预先感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。