["python","python-3.x","arguments"]
Reading named command arguments

Can I use argparse to read named command line arguments that do not need to be in a specific order? I browsed through the documentation but most of it focused on displaying content based on the arguments provided (such as --h). Right now, my script reads ordered, unnamed arguments: myscript.py foo-val bar-val using sys.argv: foo = sys.argv[1] bar = sys.argv[2] But I would like to change the input so that it is order agnostic by naming arguments: myscript.py --bar=bar-val --foo=foo-val
You can use the Optional Arguments like so. With this program: #!/usr/bin/env python3 import argparse, sys parser=argparse.ArgumentParser() parser.add_argument("--bar", help="Do the bar option") parser.add_argument("--foo", help="Foo the program") args=parser.parse_args() print(f"Args: {args}\nCommand Line: {sys.argv}\nfoo: {args.foo}") print(f"Dict format: {vars(args)}") Make it executable: $ chmod +x prog.py Then if you call it with: $ ./prog.py --bar=bar-val --foo foo-val It prints: Args: Namespace(bar='bar-val', foo='foo-val') Command Line: ['./prog.py', '--bar=bar-val', '--foo', 'foo-val'] foo: foo-val Dict format: {'bar': 'bar-val', 'foo': 'foo-val'} Or, if the user wants help argparse builds that too: $ ./prog.py -h usage: prog.py [-h] [--bar BAR] [--foo FOO] options: -h, --help show this help message and exit --bar BAR Do the bar option --foo FOO Foo the program 2022-08-30: Updated to Python3 this answer...