2012-08-25 14 views
19

मेरी सभी स्क्रिप्ट्स में मैं मानक झंडे --help और --version का उपयोग करता हूं, हालांकि मुझे लगता है कि --version को parser.add_argument(..., required=True) के साथ कैसे बनाना है।पायथन Argparse आवश्यक = सही लेकिन --vers कार्यक्षमता?

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 प्राप्त करने में कोई मदद?

+0

हो (कुंजी त्रुटियों से बचने के चाहिए :) अगर आर्ग में 'संस्करण': प्रिंट 'संस्करण जानकारी यहाँ' – radtek

उत्तर

34

वहाँ (: argparse#action के रूप में यहाँ प्रलेखित) add_argument के लिए एक विशेष संस्करणaction कीवर्ड तर्क है।

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

के रूप में http में प्रलेखित:
इस (काम कर कोड से कॉपी) का प्रयास करें // डॉक्स .python.org/लाइब्रेरी/argparse.html # क्रिया, +1। ध्यान दें कि यह वही है जो ओपी पूछता है; 'आवश्यक = सही' तर्क होने पर '--version' तर्क कार्य करने का एक तरीका। –

संबंधित मुद्दे