[python] ¿Cómo usar los subparsores argparse correctamente?



0 Answers

Question

He estado buscando en todos los ejemplos del subparser aquí y en general, pero parece que no me resulta fácil darme cuenta de esto.

Tengo dos tipos de var, uno de los cuales tiene restricciones, así que pensé que el subparser era el camino a seguir. por ejemplo, "t" permite "A" o "B". Si el usuario aprueba "A", se le solicitará que especifique si es "a1" o "a2". Si pasan solo "B", entonces nada.

¿Puedo hacer esto y que argparse me devuelva qué tipo de "A" pasó o si solo era "B"?

Lo siguiente parece funcionar, pero por alguna razón se rompe al pasar cualquier cosa después de la sub-distribución.

por ejemplo, desde un terminal de Linux

>> python test01.py -t A a1 -v 61

errores con ...

usage: test01.py a1 [-h]
test01.py a1: error: unrecognized arguments: -v

Espero que tenga sentido.

El código:

import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='types of A')

parser.add_argument("-t",
                    choices = ["A", "B"],
                    dest = "type",
                    required=True,
                    action='store',
                    help="Some help blah blah")

cam_parser = subparsers.add_parser('a1', help='Default')
cam_parser.set_defaults(which='a1')

cam_parser = subparsers.add_parser('a2', help='parse this instead of default')
cam_parser.set_defaults(which='a2')


parser.add_argument("-v",
                    nargs = '+',
                    required=True,
                    dest = "version",
                    type=int,
                    action='store',
                    help="some version help blah blah")   

argument = parser.parse_args()

print argument.type
print argument.version



Related