如何在argparse中减少参数帮助的缩进级别?

时间:2017-10-03 21:59:40

标签: python argparse

我正在使用Python的argparse,我希望减少参数帮助文本的缩进。这是argparse正在生成的内容:

$ ./help.py -h
usage: help.py [-h] [--program-argument PROGRAM_ARGUMENT]

Description of program

optional arguments:
  -h, --help            show this help message and exit
  --program-argument PROGRAM_ARGUMENT
                        This is some help text about --program-argument. For example:

                            --program-argment "You can supply a string as the program argument"

我希望它能产生更像这样的东西:

$ ./help.py -h
usage: help.py [-h] [--program-argument PROGRAM_ARGUMENT]

Description of program

optional arguments:
  -h, --help            show this help message and exit
  --program-argument PROGRAM_ARGUMENT
      This is some help text about --program-argument. For example:

          --program-argment "You can supply a string as the program argument"

这可以实现吗?这是我的代码:

#! /usr/bin/env python
import argparse

HELP_TEXT = """\
This is some help text about --program-argument. For example:

    --program-argment "You can supply a string as the program argument"
"""


if __name__ == '__main__':
    argument_parser = argparse.ArgumentParser(
        formatter_class=argparse.RawTextHelpFormatter,
        description=('Description of program'))
    argument_parser.add_argument(
        '--program-argument',
        help=HELP_TEXT
    )
    args, unknown = argument_parser.parse_known_args()

1 个答案:

答案 0 :(得分:4)

argparse格式化程序支持几个可以帮助控制某些格式的初始化值。它们都来自HelpFormatter,它有__init__方法。

class HelpFormatter(object):
    """Formatter for generating usage messages and argument help strings.

    Only the name of this class is considered a public API. All the methods
    provided by the class are considered an implementation detail.
    """

    def __init__(self,
                 prog,
                 indent_increment=2,
                 max_help_position=24,
                 width=None):
    # stuff

在确定缩进帮助子邮件的范围时会使用max_help_position,因此您可以尝试将其缩减为1012,以减少邮件缩进。

#!/usr/bin/env python
import argparse

HELP_TEXT = """\
This is some help text about --program-argument. For example:

    --program-argment "You can supply a string as the program argument"
"""

less_indent_formatter = lambda prog: argparse.RawTextHelpFormatter(prog, max_help_position=10)


if __name__ == '__main__':
    argument_parser = argparse.ArgumentParser(
        formatter_class=less_indent_formatter,
        description=('Description of program'))
    argument_parser.add_argument(
        '--program-argument',
        help=HELP_TEXT
    )
    args, unknown = argument_parser.parse_known_args()

这导致:

usage: help.py [-h] [--program-argument PROGRAM_ARGUMENT]

Description of program

optional arguments:
  -h, --help
          show this help message and exit
  --program-argument PROGRAM_ARGUMENT
          This is some help text about --program-argument. For example:

              --program-argment "You can supply a string as the program argument"

6的值如下所示:

usage: help.py [-h] [--program-argument PROGRAM_ARGUMENT]

Description of program

optional arguments:
  -h, --help
      show this help message and exit
  --program-argument PROGRAM_ARGUMENT
      This is some help text about --program-argument. For example:

          --program-argment "You can supply a string as the program argument"