You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用自定义格式化器优化argparse子命令的帮助信息显示

解决方案

直接修改代码如下即可实现需求,无需自定义格式化器:

import argparse
import sys

parser = argparse.ArgumentParser()

# 配置子命令分组
subparsers = parser.add_subparsers(
    title="subcommands",  # 指定子命令分组名称
    help=argparse.SUPPRESS,  # 隐藏子命令在默认位置参数组的显示
)

# 子命令的说明要写到help参数中,才能在父命令的子命令列表里展示
command1 = subparsers.add_parser("foo", help="Run foo subcommand")
command2 = subparsers.add_parser("bar", help="Run bar subcommand")

# 调整分组顺序,让subcommands显示在optional arguments前面
parser._action_groups.reverse()

opts = parser.parse_args(sys.argv[1:])

关键修改说明

  • 给add_subparsers传入title参数,argparse会自动把子命令归到对应名称的独立分组,不会再放到默认的位置参数组
  • 子命令的add_parser方法中,help参数定义的是父命令帮助列表里该子命令的说明,description参数定义的是执行该子命令加-h时展示的开头描述,两者作用不同不要混淆
  • 调用parser._action_groups.reverse()调整分组显示顺序,和你期望的输出格式完全匹配

内容的提问来源于stack exchange,提问作者Zachary Turner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:48:05