I am trying to implement below option by using argparse(can\'t use any other tool like docopt because of project requirement):-
cli.py --conf key1=value1, k
I would use type=str
and parse it later, perhaps with json, but the main problem with that would be the way you are writing your command:
cli.py --conf key1=value1, key2=value2, kay3=value3
The spaces split each pair to a different argument. If you use either method you suggested it would not work. Instead make sure that they are all one argument:
cli.py --conf="key1='value1', key2='value2', kay3='value3'"
That way this large argument is ready to be parsed as json
Since you commented that you must use the cli as it is written, This is another solution. In argparse
i would define the conf
argument like this:
parser.add_argument('--conf', nargs='*')
With nargs='*'
all the arguments following that would be in the same list which looks like this ['key1=value1', 'key2=value2', 'key3=value3']
To parse that list and get a dict out of it, you can do this:
parsed_conf = {}
for pair in conf:
kay, value = pair.split('=')
parsed_conf[key] = value
Now call your program like this (without commas):
cli.py --conf key1=value1 key2=value2 key3=value3
And it should work