Python argparse:预格式化的帮助文本?
我正在使用argparse,我想在我的一个选项的帮助文本中显示一个列表。但是,argparse会从文本中删除新行,并将其显示在一行中 是否仍然可以告诉argparse帮助字符串已预格式化,而不删除新行字符?: RawTextHelpFormatter维护 各种帮助文本的空白 包括参数描述Python argparse:预格式化的帮助文本?,python,argparse,Python,Argparse,我正在使用argparse,我想在我的一个选项的帮助文本中显示一个列表。但是,argparse会从文本中删除新行,并将其显示在一行中 是否仍然可以告诉argparse帮助字符串已预格式化,而不删除新行字符?: RawTextHelpFormatter维护 各种帮助文本的空白 包括参数描述 如果只想覆盖一个选项,则不能使用RawTextHelpFormatter。相反,将帮助格式化程序子类化,并为应该“原始”处理的选项提供一个特殊的介绍(我使用“R|rest of help”): 并使用它: fr
如果只想覆盖一个选项,则不能使用
RawTextHelpFormatter
。相反,将帮助格式化程序子类化,并为应该“原始”处理的选项提供一个特殊的介绍(我使用“R|rest of help”
):
并使用它:
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 |
开头,将按正常方式包装
这是我的一部分。完整的SmartFormatter还支持添加
默认设置为所有选项,以及实用程序描述的原始输入。dup:?有没有办法对单个选项执行此操作?它把另一个单词的包装搞乱了,只能读@barti_ddu的链接。我的评论也是一个骗局。谢谢,这个问题已经得到了回答,但我在发布后阅读了他的评论,所以我想让它保留下来:)如果您只想对程序描述应用预格式化,请使用,它至少从2.7开始就使用Python。不再工作了。。。
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()