2013-04-20 2 views
0

도움말 문자열을 유용하게하려고합니다. 이를 위해 나는 -h 또는 사용하여 프로그램을 호출 할 때optparse의 텍스트 줄 바꿈 여러 줄의 도움말 문자열

def parse_command_line(argvs): 

    parser = optparse.OptionParser() 

    parser.add_option("-f","--Function", help=Function.__doc__,metavar="Bs") 

    (options,arguments) = parser.parse_args(argvs) 
    return options, arguments 

options, arguments = parse_command_line(sys.argv) 

의 문제점이 발생 끝에 이런 일이 내 생각이 다 끝나면

def Function(x): 
""" First line describing what Function does 

Keyword Arguments 
x = float -- A description of what x does that may be long 

""" 

같은 문서 문자열 뭔가 기능 Function()--help 출력이 OptParse에 의해 줄 바꿈되었습니다. 즉, KeyWord 인수가 새 줄에서 시작되지 않았 음을 의미합니다. OptParse가 출력을 래핑하지 못하게 할 수 있습니까? 아니면 더 좋은 방법이 있습니까?

+3

[optparse가 권장되지 않음] (http://docs.python.org/2.7/library/optparse)을 사용하려면 [argparse] (http://docs.python.org/2.7/library/argparse) 대신 – mata

+1

argparse는 동일한 동작을 제공합니다. –

+2

'optparse'의 소스 코드를 살펴보면 해킹하지 않는 한 해답이 아닌 것처럼 보입니다 (예 : 일부 내부 메서드 재정의). –

답변

-1

argparse 원시 형식의 포맷을 제공, 당신의 선 늘 감싸 얻을 즉 파서 = argparse.ArgumentParser (formatter_class = argparse.RawDescriptionHelpFormatter)

optparse의는 또한 당신이 포맷을 설정할 수 있습니다 .. 나는 당신이 할 수있는 가정 자신 만의 포맷터를 작성해 주시길 바랍니다. 내가 아는 한 아무것도 제공하지 않습니다.

0

관심이 있으시면 argparse에 대해 두 가지 포맷터 클래스를 작성했습니다. 첫 번째는 미디어 위키, 가격 인하 및 POD 구문 (심지어 상호 혼합)의 대부분을 지원합니다

import MarkupHelpFormatter 
MarkupHelpFormatter.InputOptions["mediawiki"] = True 
parser = argparse.ArgumentParser(
    description="""...your text, with mediawiki markup...""", 
    epilog='...', 
    formatter_class=MarkupHelpFormatter.MarkupHelpFormatter 
) 

다른 하나는 "ParagraphHelpFormatter"라고합니다. 공백 라인을 존중하는 것을 제외하고는 기본 argparse 포맷터처럼 텍스트를 감쌀뿐입니다.

둘 다 http://derose.net/steve/utilities/PY/MarkupHelpFormatter.py이고, 은 CCLI 귀속 공유와 유사합니다. 이들은 ANSI 터미널 인터페이스 용으로 형식을 지정합니다. 고도로 광택 처리되지 않은 경우 (예 : 자동 번호 매기기가 완료되지 않은 경우), 도움이 될 수 있습니다.