argparse를 사용하고 있으며 내 옵션 중 하나의 도움말 텍스트에 목록을 표시하려고합니다. 그러나 argparse는 텍스트에서 새 줄을 제거하고 한 줄에 표시합니다.Python argparse : 미리 서식이 지정된 도움말 텍스트?
어쨌든 argparse에게 도움말 문자열이 미리 포맷되어 있고 줄 바꿈 문자를 제거하지 않는다고 말합니까? docs에서
argparse를 사용하고 있으며 내 옵션 중 하나의 도움말 텍스트에 목록을 표시하려고합니다. 그러나 argparse는 텍스트에서 새 줄을 제거하고 한 줄에 표시합니다.Python argparse : 미리 서식이 지정된 도움말 텍스트?
어쨌든 argparse에게 도움말 문자열이 미리 포맷되어 있고 줄 바꿈 문자를 제거하지 않는다고 말합니까? docs에서
:
RawTextHelpFormatter 인수의 설명을 포함하여 도움말 텍스트 의 모든 종류에 대한 공백을 유지합니다. 당신은 단지 하나의 옵션을 무시하려면
from argparse import RawTextHelpFormatter
parser = ArgumentParser(description='test', formatter_class=RawTextHelpFormatter)
하나의 옵션에 대해이 작업을 수행 할 수있는 방법이 있습니까? 그것은 다른 사람을위한 포장 배치를 망쳐 놓는다 – petraus
@ barti_ddu의 링크를 읽는다. 내 의견도 속임수입니다. thanks – petraus
예,이 질문은 이미 답변되었지만 게시 후 그의 의견을 읽었 기 때문에 나는 그것을 머물게 할 것입니다. :) – user225312
, 당신은 RawTextHelpFormatter
을 사용할 수 없습니다. 그것을
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)
를 사용 : 대신 HelpFormatter
를 서브 클래스 화해, "원시"처리해야 할 옵션에 대한 특별한 소개를 제공한다 (나는 "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|
정상적으로 포장됩니다.
이 부분은 my improvements on argparse의 일부입니다. 전체 SmartFormatter는 또한 모든 옵션에 기본값 을 추가하고 유틸리티 설명의 원시 입력을 지원합니다.
dup : http://stackoverflow.com/questions/3853722/python-argparse-how-to-insert-newline-the-help-text? –