Python argparse required=True but --version functionality?
18,603
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)')
Related videos on Youtube
Author by
Bob Tanner
Updated on September 22, 2022Comments
-
Bob Tanner over 1 year
In all my scripts I use the standard flags
--help
and--version
, however I cannot seem to figure out how to make a--version
withparser.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?-
radtek about 10 yearsShould be (to avoid key errors:) if 'version' in args: print 'Version information here'
-
-
Martijn Pieters over 11 yearsAs documented in docs.python.org/library/argparse.html#action, +1. Note that this is exactly what the OP asks for; a method to make a
--version
argument work, when there arerequired=True
arguments.