删除长子命令帮助输出?

时间:2014-04-10 06:23:18

标签: python python-2.7 argparse

我使用argparse生成CLI并使用add_subparsers函数。这是--help输出非常难看的例外情况。它列出了整体语法中的所有命令。例如:

usage: redid [-h] [--config CONFIG] [--verbose] [--show-curl] [--save [SAVE]]

             {setup,show-config,check-auth,version,get-profile,put-profile,delete-profile,get-profile-signature,list-profiles,list-resources,ls-resources,get-resource-record,delete-resource,get-resource,upload-resource,get-resource-url}
             ...

我更喜欢更传统,更干净的输出,类似于:

usage: redid [OPTIONS...] Command ...

我该怎么做?

1 个答案:

答案 0 :(得分:1)

尝试将metavar参数添加到您的subparser定义中,并且不给它任何值:

parser.add_subparsers(title="the_commands", metavar="")

From the documentation

  

参数说明:

     

....

     
      
  • metavar - 在帮助中显示可用子命令的字符串;默认情况下,它为None,并以{cmd1,cmd2,..}
  • 形式显示子命令   

以下是一个示例,我不确定您是如何设置子解析器的,但是:

parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('--foo', action='store_true', help='foo help')
subparsers = parser.add_subparsers(help="sub-command help", metavar="sub command")
parser_a = subparsers.add_parser('a', help='a help')
parser_a.add_argument('bar', type=int, help='bar help')
parser_b = subparsers.add_parser('b', help='b help')
parser_b.add_argument('--baz', choices='XYZ', help='baz help')

>>> parser.print_help()
usage: PROG [-h] [--foo] sub command ...

positional arguments:
  sub command  sub-command help
    a          a help
    b          b help

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