Python Argparse - Как я могу добавить текст в справочное сообщение по умолчанию? - PullRequest
0 голосов
/ 25 апреля 2018

Я использую argparse для обработки разборов аргументов. Я получаю сообщение справки по умолчанию, структурированное так:

usage: ProgramName [-h] ...

Description

positional arguments:
  ...

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

Я хочу добавить к этому сообщению целый новый раздел, например:

usage: ProgramName [-h] ...

Description

positional arguments:
  ...

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

additional information:
  This will show additional information relevant to the user.
  ....

Есть ли способ добиться такого поведения? Предпочтительным является решение, поддерживаемое как Python 2.7, так и 3.x.

Edit: Я бы также предпочел решение, которое добавит новый раздел / разделы внизу справочного сообщения.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Вы вполне можете сделать это, используя epilog . Вот пример ниже:

import argparse
import textwrap
parser = argparse.ArgumentParser(
      prog='ProgramName',
      formatter_class=argparse.RawDescriptionHelpFormatter,
      epilog=textwrap.dedent('''\
         additional information:
             I have indented it
             exactly the way
             I want it
         '''))
parser.add_argument('--foo', nargs='?', help='foo help')
parser.add_argument('bar', nargs='+', help='bar help')
parser.print_help()

Результат:

usage: ProgramName [-h] [--foo [FOO]] bar [bar ...]

positional arguments:
  bar          bar help

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

additional information:
    I have indented it
    exactly the way
    I want it
0 голосов
/ 25 апреля 2018

Есть несколько способов, которыми вы можете добавить описание к вашей команде. Рекомендуемый способ - добавить документацию к модулю вверху файла с исходным кодом, как в:

""" This is the description, it will be accessible within the variable
    __doc__
"""

А потом:

parser = argparse.ArgumentParser(description=__doc__)

Чтобы добавить текст под описанием параметра, используйте эпилог, как показано в следующем примере, взятом из документации:

>>> parser = argparse.ArgumentParser(description='A foo that bars',  
                                     epilog="And that's how you'd foo a bar")
>>> parser.print_help() 

usage: argparse.py [-h]

A foo that bars

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

And that's how you'd foo a bar

Обратитесь к документации (ссылка выше) для получения дополнительной информации.

...