[python] 파이썬 optparse, 사용량 출력에 추가 정보를 포함하는 방법?


Answers

성공한 대답 (내 자신의 코드에서 동일한 문제를 해결하는 데 도움이 됨)을 상세히 설명하자면, 신속하고 더러운 옵션 중 하나는 클래스의 메서드를 ID 메서드로 직접 재정의하는 것입니다.

optparse.OptionParser.format_epilog = lambda self, formatter: self.epilog
optparser = optparse.OptionParser(epilog=helptext)

helptext를 축 어적 에필로그로 인쇄하기.

이 방법은 프로그램에서 OptionParser 클래스의 모든 용도에 대한 에필로그 형식을 재정의하는 것으로 생각합니다. 따라서 이러한 모든 에필로그는 OptionParser를 프로그램의 다른 곳에서 사용하는 경우 축 어적으로 전달되어야합니다.

Question

파이썬의 optparse 모듈을 사용하여 정규 사용량 출력 아래에 예제 라인을 추가하고 싶습니다. 내 현재 help_print () 출력은 다음과 같습니다.

usage: check_dell.py [options]

options:
-h, --help     show this help message and exit
-s, --storage  checks virtual and physical disks
-c, --chassis  checks specified chassis components

저의 일에 적은 지식을 가진 사용자를 위해 사용 예제를 포함하고 싶습니다. 이 같은:

usage: check_dell.py [options]

options:
-h, --help     show this help message and exit
-s, --storage  checks virtual and physical disks
-c, --chassis  checks specified chassis components

Examples:

check_dell -c all
check_dell -c fans memory voltage
check_dell -s

나는 어떻게 이것을 성취 할 것인가? optparse 옵션이 그러한 것을 허용합니까? 현재 코드 :

import optparse

def main():
    parser = optparse.OptionParser()
    parser.add_option('-s', '--storage', action='store_true', default=False, help='checks virtual and physical disks')
    parser.add_option('-c', '--chassis', action='store_true', default=False, help='checks specified chassis components')

(opts, args) = parser.parse_args()



IndentedHelpFormatter를 상속 받았으며 매우 간단했습니다.

class PlainHelpFormatter(optparse.IndentedHelpFormatter):
    def format_description(self, description):
        if description:
            return description + "\n"
        else:
            return ""
    def format_epilog(self, epilog):
        if epilog:
            return epilog + "\n"
        else:
            return ""



이 작업을 수행하는 방법에 대한 또 다른 아이디어는 -h 대한 기본 동작을 비활성화하고 기본 도움말을 포함 할 수있는 사용자 고유의 도움말 화면을 인쇄하는 것입니다.

from optparse import OptionParser

parser = OptionParser(add_help_option=False, 
                      epilog="This can't be easily\n multilined")
parser.add_option('-h', '--help', dest='help', action='store_true',
                  help='show this help message and exit')

(options, args) = parser.parse_args()

if options.help:
    parser.print_help()
    print 'now we have an epilog'
    print 'with as many lines as you wish'
    sys.exit()

이것은 기본적으로 파서가 add_help_option=True 의 기본 동작으로 add_help_option=True 하는 print 입니다. 물론 print 은 제외됩니다.

그러나 모든 정직한면에서 시작 부분과 끝 부분에 설명 선을 추가하는 방법을 선호합니다.




Related