일반적으로 man과 함께 사용할 수있는 긴 문서는 화면에 직접 인쇄되지 않지만 less (예 : man ls와 같이)로 리디렉션됩니다.docopt --help 옵션을 less로 리디렉션 할 수 있습니까?
파이썬에서 docopt 모듈을 사용하여 그렇게 할 수 있습니까?
일반적으로 man과 함께 사용할 수있는 긴 문서는 화면에 직접 인쇄되지 않지만 less (예 : man ls와 같이)로 리디렉션됩니다.docopt --help 옵션을 less로 리디렉션 할 수 있습니까?
파이썬에서 docopt 모듈을 사용하여 그렇게 할 수 있습니까?
는 공식 방법이 아니지만, 당신은이 작업을 수행 할 수 있습니다
"""
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.
upvote에 대한 담당자가 충분하지 않지만 귀하의 답변과 설명은 내가 찾고있는 것이 었습니다. 고마워요! – Liad
@Liad 걱정 마세요. 곧 대리인을 얻을 수 있습니다. 재미있어! – matsjoyce