2012-08-25 4 views
19

모든 스크립트에서 표준 플래그 --help--version을 사용하지만 을 사용하여 --version을 만드는 방법을 알아낼 수 없습니다.Python argparse 필수 = true이지만 --version 기능이 있습니까?

import sys, os, argparse 

parser = argparse.ArgumentParser(description='How to get --version to work?') 

parser.add_argument('--version', action='store_true', 
        help='print version information') 
parser.add_argument('-H', '--hostname', dest='hostname', required=True, 
        help='Host name, IP Address') 
parser.add_argument('-d', '--database', dest='database', required=True, 
        help='Check database with indicated name') 
parser.add_argument('-u', '--username', dest='username', required=True, 
        help='connect using the indicated username') 
parser.add_argument('-p', '--password', dest='password', required=True, 
        help='use the password to authenticate the connection') 

args = parser.parse_args() 

if args.version == True: 
    print 'Version information here' 

$ ./arg.py --version 
usage: arg.py [-h] [--version] -H HOSTNAME -d DATABASE -u USERNAME -p PASSWORD 
arg.py: error: argument -H/--hostname is required 

네, 필요 --hostname을 원하지만, 난 항상--version--help (및 -h)처럼 적절하게 작업 할 .

$ ./arg.py --help 
usage: arg.py [-h] [--version] -H HOSTNAME -d DATABASE -u USERNAME -p PASSWORD 

How to get --version to work? 

optional arguments: 
    -h, --help   show this help message and exit 
    --version    print version information 
    -H HOSTNAME, --hostname HOSTNAME 
         Host name, IP Address 
    -d DATABASE, --database DATABASE 
         Check database with indicated name 
    -u USERNAME, --username USERNAME 
         connect using the indicated username 
    -p PASSWORD, --password PASSWORD 
         use the password to authenticate the connection 

--version에 도움이 되셨습니까? (: argparse#action 여기에 설명 된 바와 같이)

+0

이 수 (키 오류가 발생하지 않도록해야 :) 를 인수에서 '버전'경우 : 인쇄 '여기 버전 정보' – radtek

답변

34

add_argument에 특별한 버전action 키워드 인수가 있습니다.

parser.add_argument('-V', '--version', 
        action='version',      
        version='%(prog)s (version 0.1)') 
+4

는 HTTP에 설명 된대로 :
이가 (작업 코드에서 복사) 시도 // 문서 .python.org/library/argparse.html # action, +1. 이것이 바로 OP가 요구하는 바입니다. 'required = True' 인수가있을 때'--version' 인자를 작동시키는 방법. –

관련 문제