Python: ¿Subcomando Subcomante Argparse?
Pregunta
Tengo un programa que tiene muchas opciones disponibles. Por ejemplo, una opción de configuración para cambiar la configuración.
./app config -h
me da la ayuda usando subcomands argparse normales
Ahora me gustaría agregar otro subcomando al subcomando de configuración llamado Lista a la lista de valores de configuración
./app config list
Además, ese comando debe aceptar otra opción para que yo pueda decir
./app config list CATEGORY
solo para enumerar la configuración de una categoría
Mi código ahora mismo es básicamente esto solo con más comandos
>>> parser = argparse.ArgumentParser()
>>> subparsers = parser.add_subparsers(title='subcommands',
... description='valid subcommands',
... help='additional help')
>>> subparsers.add_parser('foo')
>>> subparsers.add_parser('bar')
>>> parser.parse_args(['-h'])
usage: [-h] {foo,bar} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
valid subcommands
{foo,bar} additional help
Hasta ahora no pude encontrar ninguna forma de usar un subcomando en un subcomando. Si esto es posible, ¿cómo? Si no, ¿hay alguna otra forma de lograr este objetivo?
Gracias de antemano
Solución
#file: argp.py
import argparse
parser = argparse.ArgumentParser(prog='PROG')
parser_subparsers = parser.add_subparsers()
sub = parser_subparsers.add_parser('sub')
sub_subparsers = sub.add_subparsers()
sub_sub = sub_subparsers.add_parser('sub_sub')
sub_sub_subparsers = sub_sub.add_subparsers()
sub_sub_sub = sub_sub_subparsers.add_parser('sub_sub_sub')
Parece funcionar.
In [392]: run argp.py
In [393]: parser.parse_args('sub sub_sub sub_sub_sub'.split())
Out[393]: Namespace()
In [400]: sys.version_info
Out[400]: sys.version_info(major=2, minor=7, micro=2, releaselevel='final', serial=0)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow