Если вы просто хотите переопределить одну опцию, вы не можете использовать RawTextHelpFormatter
. Вместо этого создайте подкласс HelpFormatter
и предоставьте специальное вступление для опций, которые должны обрабатываться "raw" (я использую "R|rest of help"
):
import argparse
class SmartFormatter(argparse.HelpFormatter):
def _split_lines(self, text, width):
# this is the RawTextHelpFormatter._split_lines
if text.startswith('R|'):
return text[2:].splitlines()
return argparse.HelpFormatter._split_lines(self, text, width)
И используйте это:
from argparse import ArgumentParser
from textwrap import dedent
parser = ArgumentParser(description='test')
parser.add_argument('--list', help=dedent("""\
R|abc
def
ghi
"""))
parser.parse_args()
Любые другие вызовы .add_argument()
, где справка начинается не с R|
, будут переноситься как обычно.
Это часть моих улучшений в argparse . Полный SmartFormatter также поддерживает добавление
значения по умолчанию для всех опций и необработанный ввод описания утилит.