I have to make a parser with command line arguments like this
python function.py -v 1 name1 -d abc xyz foo bar name2 -i 3 -p abc xyz
I did this:
import argparse
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-v', type=int, help='number')
subparsers = parser.add_subparsers(help='sub-command help', dest="command")
parser_a = subparsers.add_parser('name1', help="name1 help")
parser_a.add_argument("-d", help="list", nargs="+")
parser_b = subparsers.add_parser('name2', help="name2 help")
parser_b.add_argument("-p", help="list2", nargs='+')
parser_b.add_argument("-i", help="number inside name2", type=int)
When I run this:
parser.parse_args('-v 1 name1 -d abc xyz foo bar name2 -i 3 -p abc xyz'.split())
It results in:
usage: PROG [-h] [-v V] {name1,name2} ...
PROG: error: unrecognized arguments: -i 3 -p abc xyz
And when running this:
parser.parse_args('-v 1 name1 -d abc xyz foo bar name2'.split())
It results in this:
Namespace(command='name1', d=['abc', 'xyz', 'foo', 'bar', 'name2'], v=1)
I want it to be something like this:
Namespace(command='name1', d=['abc', 'xyz', 'foo', 'bar'], command='name2', p=['abc', 'xyz'], i=3, v=1)
How do I do it?