Python argparse required=True but --version functionality?
argparse, command-line-arguments, python
Solution
There is a special version `action` keyword argument to `add_argument` (As documented here: argparse#action). Try this (copied from working code):
parser.add_argument('-V', '--version',
action='version',
version='%(prog)s (version 0.1)')
Problem
In all my scripts I use the standard flags `--help` and `--version`, however I cannot seem to figure out how to make a `--version` with `parser.add_argument(..., required=True)`. ``` 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 ``` Yes, I want `--hostname` and others required, but I always want `--version` to work appropriately like `--help` (and `-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 ``` Any help on getting `--version` to work?