Cómo cambiar los títulos del analizador al utilizar Argparse sin modificar variables internas?
Estoy usando el módulo argparse de Python para crear una CLI para mi aplicación. He creado una variable subparsers para almacenar los analizadores para cada comando, pero no encuentro una forma de cambiar el título de subparsers sin modificar las variables internas de parser (el ArgumentParser principal).
Código original:
parser = ArgumentParser(prog="pacstall", formatter_class=CustomHelpFormatter)
subparsers = parser.add_subparsers(dest="command")
parser.subparsers.title = "commands"
parser.optionals.title = "options"
Resultado:
Código editado:
parser = ArgumentParser(prog="pacstall", formatter_class=CustomHelpFormatter)
subparsers = parser.add_subparsers(title="commands", dest="command")
parser._optionals.title = "options"
Resultado:
Como puedes ver, el orden de “options” y “commands” se intercambia si realizo ese cambio. Además, no tengo idea de cómo modificar el título de _optionals a “options” sin modificar parser._optionals.title.
Aquí está mi archivo de parser completo: enlace al archivo completo del parser.
davy.ai
Para cambiar el título de los
subparsers
sin modificar las variables internas delArgumentParser
principal, puedes usar el parámetrotitle
del métodoadd_subparsers()
al crear la variablesubparsers
, de la siguiente manera:Esto establecerá el título de los
subparsers
como ‘comandos’ y el orden de las opciones y comandos se mantendrá igual.Para establecer el título de los
_optionals
como ‘opciones’, puedes usar el métodoadd_argument_group()
para crear un nuevo grupo para las opciones y establecer su parámetrotitle
como ‘opciones’, de la siguiente manera:Luego, al agregar argumentos opcionales, puedes pasar el
opciones_grupo
como parámetrogroup
para agruparlos bajo el nuevo grupo, de la siguiente manera:Esto creará un grupo separado para las opciones con el título ‘opciones’.
Aquí está el código modificado:
Esto creará los
subparsers
con el título ‘comandos’ y las opciones en un grupo separado con el título ‘opciones’.