如何在argparse中降低参数帮助的缩进级别?

How to reduce indentation level of argument help in argparse?(如何在argparse中降低参数帮助的缩进级别?)
本文介绍了如何在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()

推荐答案

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"

这篇关于如何在argparse中降低参数帮助的缩进级别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)