Python Argparse с ArgumentDefaultsHelpFormatter и RawTextHelpFormatter - PullRequest
0 голосов
/ 20 апреля 2020

Я использую argparse с Python 2.7. Я хотел бы использовать RawTextHelpFormatter для получения перевода строки в эпилоге и ArgumentDefaultsHelpFormatter, чтобы получить значения по умолчанию, отображаемые в справке по умолчанию.

Например, если эпилогом ArgumentParser является:

 epilog="first line\n second line"

и имеются аргументы:

group.add_argument(
    "-d",
    "--development",
    action="store_true",
    dest="build_dev",
    default="False",
    help="Build development code",
)
group.add_argument(
    "-p",
    "--production",
    action="store_true",
    dest="build_prod",
    default="False",
    help="Build production release",
)

Вывод справки должен быть:

   -d, --development   Build development code (default: False)
   -p, --production    Build production release (default: False)
first line
second line

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вставка своих default в помощь:

In [324]: parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, 
     ...:    epilog="first line\n second line") 
     ...: group = parser.add_argument_group('test') 
     ...: group.add_argument( 
     ...:     "-d", 
     ...:     "--development", 
     ...:     action="store_true", 
     ...:     dest="build_dev", 
     ...:     default="False", 
     ...:     help="Build development code (default: %(default)s)", 
     ...:  ) 
     ...: group.add_argument( 
     ...:     "-p", 
     ...:     "--production", 
     ...:     action="store_true", 
     ...:     dest="build_prod", 
     ...:     default="False", 
     ...:     help="Build production release (default: %(default)s", 
     ...:  )                                                                                           
Out[324]: _StoreTrueAction(option_strings=['-p', '--production'], dest='build_prod', nargs=0, const=True, default='False', type=None, choices=None, help='Build production release (default: %(default)s', metavar=None)
In [325]: parser.print_help()                                                                          
usage: ipython3 [-h] [-d] [-p]

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

test:
  -d, --development  Build development code (default: False)
  -p, --production   Build production release (default: False

first line
 second line
0 голосов
/ 20 апреля 2020

Использовать аргумент эпилога

>>> parser = argparse.ArgumentParser(
...     prog='PROG',
...     description='''this description
...         was indented weird
...             but that is okay''',
...     epilog='''
...             likewise for this epilog whose whitespace will
...         be cleaned up and whose words will be wrapped
...         across a couple lines''')
>>> parser.print_help()

ссылка: https://docs.python.org/2.7/library/argparse.html#description

...