Reading named command arguments Reading named command arguments python-3.x python-3.x

Reading named command arguments


You can use the Optional Arguments like so:

import argparse, sysparser=argparse.ArgumentParser()parser.add_argument('--bar', help='Do the bar option')parser.add_argument('--foo', help='Foo the program')args=parser.parse_args()print argsprint sys

Then if you call it with ./prog --bar=bar-val --foo foo-val it prints:

Namespace(bar='bar-val', foo='foo-val')['Untitled 14.py', '--bar=bar-val', '--foo', 'foo-val']

Or, if the user wants help argparse builds that too:

 $ ./prog -husage: Untitled 14.py [-h] [--bar BAR] [--foo FOO]optional arguments:  -h, --help  show this help message and exit  --bar BAR   Do the bar option  --foo FOO   Foo the program


The answer is yes. A quick look at the argparse documentation would have answered as well.

Here is a very simple example, argparse is able to handle far more specific needs.

import argparseparser = argparse.ArgumentParser()parser.add_argument('--foo', '-f', help="a random options", type= str)parser.add_argument('--bar', '-b', help="a more random option", type= int, default= 0)print(parser.format_help())# usage: test_args_4.py [-h] [--foo FOO] [--bar BAR]# # optional arguments:#   -h, --help         show this help message and exit#   --foo FOO, -f FOO  a random options#   --bar BAR, -b BAR  a more random optionargs = parser.parse_args("--foo pouet".split())print(args)  # Namespace(bar=0, foo='pouet')print(args.foo) # pouetprint(args.bar) # 0

Off course, in a real script, you won't hard-code the command-line options and will call parser.parse_args() (without argument) instead. It will make argparse take the sys.args list as command-line arguments.

You will be able to call this script this way:

test_args_4.py -h  # prints the help messagetest_args_4.py -f pouet  # foo="pouet", bar=0 (default value)test_args_4.py -b 42  # foo=None, bar=42test_args_4.py -b 77 -f knock  # foo="knock", bar=77

You will discover a lot of other features by reading the doc ;)


I think it might help you with a simple one

#! /usr/bin/python3                                                                                                                    import sys                                                                                                                                                                                                                                                                keys = ["--paramkey=","-p="]                                                                                                           for i in range(1,len(sys.argv)):                                                                                                           for key in keys:                                                                                                                           if sys.argv[i].find(key) == 0:                                                                                                             print(f"The Given value is: {sys.argv[i][len(key):]}")                                                                                 break   

Run:

$ ./example.py --paramkey=paramvalue -p=pvalue

Output:

The Given value is: paramvalueThe Given value is: pvalue