How to use argparse on python3


The goal is to provide to your application, a strong command line options support, and be easy to program as well as to use it.

# basic initialization
import argparse
parser = argparse.ArgumentParser(description='The description of your handy tool')
 
# create a mutually exclusive group of parameters
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--ping', action='store_true', help='(example) a flag to ping your application')
group.add_argument('--health', action='store_true', help='(example) another flag to check the health of your app')
group.add_argument('--someaction', metavar='S', type=int, help='(example) an action of your application, using an integer as an argument, and showed as "S"')
 
# add a manual group of parameters (in this case, the required ones)
group2 = parser.add_argument_group('required arguments')
# add a required argument of type string
group2.add_argument('--host', metavar='HOST:PORT', required=True, type=str, help='(example) host and port of your application backend')
 
# the last argument is a 0 to N integer array called 'numbers'
# "*" means 0 to N, "+" means 1 to N
parser.add_argument('numbers', metavar='N', type=int, nargs='*', help='(example) some integer numbers')
 
# parse the args from the sys.argv without using the first parameter (which is the program name)
args = parser.parse_args(sys.argv[1:])
 
# access the parameters easily
print(args.ping)
print(args.numbers)
print(args.host)
>>> True
>>> [1, 3, 9]
>>> 127.0.0.1:3306

Invocation example:

python3 yourtool.py --ping --host=127.0.0.1:3306 1 3 9

Invoke as follows to get the help of your handy tool:

python3 yourtool.py --help