Если вы просто хотите, чтобы переопределить один вариант, вы не можете использовать RawTextHelpFormatter
. Вместо этого подкласса HelpFormatter
и обеспечивают специальную интро для опций, которые должны быть обработаны «сырой» (я использую "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|
будет завернута как обычно.
Это часть my improvements on argparse. Полный SmartFormatter также поддерживает добавление значений по умолчанию ко всем параметрам и необработанный ввод описания утилиты.
dup: http://stackoverflow.com/questions/3853722/python-argparse-how-to-insert-newline-the-help-text? – 2010-12-07 10:06:06