2012-01-24 2 views
6

중괄호 사이의 인쇄 하위 명령 선택을 어떻게 비활성화 할 수 있습니까? http://docs.python.org/dev/library/argparse.html#sub-commands에서 예를 사용하여 정상 출력은 다음과 같습니다파이썬의 argparse 모듈에서 어떻게 중괄호 사이에 하위 명령을 인쇄 할 수 없게 할 수 있습니까?

usage: [-h] {foo,bar} ... 

optional arguments: 
-h, --help show this help message and exit 

subcommands: 
{foo,bar} additional help 

내가 원하는 것은이 인쇄하는 것입니다 :

usage: [-h] {foo,bar} ... 

optional arguments: 
-h, --help show this help message and exit 

subcommands: 

단지 마지막 줄을 제거.

답변

0

원하는대로 원하는대로 인쇄 할 수있는 고유 한 방법으로 ArgumentParser.print_usage()를 재정의하십시오. 마지막 행을 삭제하고 원본 버전을 호출하고 결과를 파일로 전송하여 결과를 캡처 한 다음 원하는 부분 만 인쇄하면됩니다.

6

수십 개의 하위 명령이 포함 된 커다란 못생긴 목록을 가진 사용자를 스팸으로 보내지 않으려면 하위 명령 객체의 metavar 속성을 설정하기 만하면됩니다.

import argparse 
parser = argparse.ArgumentParser(description='Stack Overflow example') 
subs = parser.add_subparsers() 
subs.metavar = 'subcommand' 
sub = subs.add_parser('one', help='does something once') 
sub = subs.add_parser('two', help='does something twice') 
parser.parse_args() 

그리고 하나의 -h 인수를 사용하여이 스크립트를 실행의 출력은 다음과 같습니다 :처럼 내 코드 보인다

결과는 당신이 가장 원하는 사례로 설명 정확히 아니지만, 생각 argparse.ArgumentParser의 하위 클래스를 지정하지 않고 조정할 필요가있는 항목을 재정의하지 않고도 가장 가까운 작업 일 수 있습니다. 이는 지저분한 작업입니다.

관련 문제