web-dev-qa-db-ja.com

Python argparse required = Trueですが--version機能ですか?

すべてのスクリプトで、標準フラグ--help--versionを使用していますが、parser.add_argument(..., required=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を機能させるためのヘルプはありますか?

22
Bob Tanner

add_argumentへの特別なversionactionキーワード引数があります(ここに記載されているように: argparse#action )。
これを試してください(作業コードからコピー):

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