2014-01-21 5 views
4

내가 파이썬과 argparse에 대한 몇 가지 스크립트가, 선택적 인수 중 하나는 음역이 추가Argparse 도움 문자열에서 선택적 인수를 추가

parser = argparse.ArgumentParser() 
parser.add_argument('-t', '--text', 
        action='store_true', 
        help='display a text') 
parser.add_argument('-s', '--search', 
        dest='string', 
        action='store', 
        type=str, 
        help='search in a text') 
parser.add_argument('--translit', 
        action='store_true', 
        help='transliterate output; usage: prog [-t | -d STRING] --translit') 

results = parser.parse_args() 

if len(sys.argv) == 1: 
    parser.print_help() 
elif results.text and results.translit:: 
    translit(display_text()) 
elif results.text and results.translit:: 
    display_text() 
elif results.string and results.translit: 
    translit(search(results.string)) 
elif results.string: 
    search(results.string) 

출력 :

usage: prog [-h] [-t] [-s STRING] [--translit] 

optional arguments: 
    -h, --help     show this help message and exit 
    -t, --text     display a text 
    -s STRING, --search STRING search in a text 
    --translit     transliterate output; usage: prog 
           [-t | -s STRING] --translit 

더 출력이 없습니다, 경우 전 prog - translit를 실행합니다. 나는 문자열이 너무보고 필요 : 나는 음식물 --translit을 실행하면

usage: prog [-h] [-t] [-s STRING] [[-t | -s STRING] --translit] 

는, 출력 문자열은 다음과 같아야합니다

prog: error: argument --translit: usage: [[-t | -s STRING] --translit] 

내가 어떻게 할 수 있습니까?

elif results.translit: 
    parser.print_help() 
+0

이 --translit'이 옵션은 텍스트 '와'검색'에 의해 인식해야한다'처럼 나에게 보인다 '부속 명령. – chepner

+0

'parser.usage'를 명시 적으로 원하는 모든 문자열로 설정할 수 있습니다. 파서를 만들 때 또는 도움말 또는 오류 메시지를 표시하기 전에 언제든지 수행 할 수 있습니다. – hpaulj

답변

1

당신은 음역하여에게이 필요한 경우 prog translit -h로 작동 할 subparser/subcommand하거나 prog translit을 만들 수 : 전용이 확인되는 것도 없기 때문에

1

당신은 아마에 대해 별도의 조건을 작성해야 옵션이 누락되면 도움말 텍스트가 표시됩니다.

parser = argparse.ArgumentParser() 
parser.add_argument('-s', '--string', required=True) 
subparsers = parser.add_subparsers(dest='subcommand_name') 
translit_parser = subparsers.add_parser('translit') 
translit_parser.add_argument('x', required=True) 
parser.parse_args() 

python test.py translit의 라인을 따라

뭔가 것 같은 출력 뭔가 :

usage: test.py translit [-h] -x X 
test.py translit: error: argument -x is required 
관련 문제