¿Cómo tener argumentos de sub-analizador en espacio de nombres separado con argparse?
Tengo el siguiente código de prueba
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbose", default = 0, type=int)
subparsers = parser.add_subparsers(dest = "parser_name")
parser_lan = subparsers.add_parser('car')
parser_lan.add_argument("--boo")
parser_lan.add_argument("--foo")
parser_serial = subparsers.add_parser('bus')
parser_serial.add_argument("--fun")
print parser.parse_args()
que define dos sub-analizadores, que tienen un conjunto diferente de argumentos. Cuando llamo al testcode como
tester.py --verbose 3 car --boo 1 --foo 2
Me sale el resultado esperado
Namespace(boo='1', foo='2', parser_name='car', verbose=3)
Lo que quiero tener en su lugar son los valores de cada subparser en un espacio de nombres o dictado separados, algo como
Namespace(subparseargs={boo:'1', foo:'2'}, parser_name='car', verbose=3)
de modo que los argumentos de cada subparser estén separados lógicamente de los argumentos del analizador principal (comoverbose
en este ejemplo).
¿Cómo puedo lograr esto, con los argumentos para cada subparser en elmismo espacio de nombressubparseargs
en el ejemplo).