2017-01-26 4 views

답변

2

공식 방법이 아니지만, 당신은이 작업을 수행 할 수 있습니다

""" 
Usage: 
    docopt_hack.py 
""" 

import docopt, sys, pydoc 

def extras(help, version, options, doc): 
    if help and any((o.name in ('-h', '--help')) and o.value for o in options): 
     pydoc.pager(doc.strip("\n")) 
     sys.exit() 
    if version and any(o.name == '--version' and o.value for o in options): 
     print(version) 
     sys.exit() 

docopt.extras = extras 

# Do your normal call here, but make sure it is after the previous lines 
docopt.docopt(__doc__, version="0.1") 

는 우리가 할 것은 정상 docopt (https://github.com/docopt/docopt/blob/master/docopt.py#L476-L482)의 도움말의 인쇄를 처리하는 extras 기능을 오버라이드 (override)합니다. 그런 다음 pydoc을 사용하여 입력을 호출기 (https://stackoverflow.com/a/18234081/3946766)로 푸시합니다. pydoc을 사용하는 것은 안전하지 않은 바로 가기입니다. 메서드가 문서화되지 않고 제거 될 수 있기 때문입니다. extras도 마찬가지입니다. YMMV.

+0

upvote에 대한 담당자가 충분하지 않지만 귀하의 답변과 설명은 내가 찾고있는 것이 었습니다. 고마워요! – Liad

+0

@Liad 걱정 마세요. 곧 대리인을 얻을 수 있습니다. 재미있어! – matsjoyce