es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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:

original_code_result

Código editado:

parser = ArgumentParser(prog="pacstall", formatter_class=CustomHelpFormatter)
subparsers = parser.add_subparsers(title="commands", dest="command")
parser._optionals.title = "options"

Resultado:

edited_code_result

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.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el título de los subparsers sin modificar las variables internas del ArgumentParser principal, puedes usar el parámetro title del método add_subparsers() al crear la variable subparsers, de la siguiente manera:

    subparsers = parser.add_subparsers(title='comandos', dest='comando')
    

    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étodo add_argument_group() para crear un nuevo grupo para las opciones y establecer su parámetro title como ‘opciones’, de la siguiente manera:

    opciones_grupo = parser.add_argument_group(title='opciones')
    

    Luego, al agregar argumentos opcionales, puedes pasar el opciones_grupo como parámetro group para agruparlos bajo el nuevo grupo, de la siguiente manera:

    opciones_grupo.add_argument('-v', '--version', action='version', version=version_string)
    

    Esto creará un grupo separado para las opciones con el título ‘opciones’.

    Aquí está el código modificado:

    parser = ArgumentParser(prog="pacstall", formatter_class=CustomHelpFormatter)
    
    subparsers = parser.add_subparsers(title='comandos', dest='comando')
    
    opciones_grupo = parser.add_argument_group(title='opciones')
    
    parser.add_argument('-v', '--version', action='version', version=version_string, group=opciones_grupo)
    
    install_parser = subparsers.add_parser('install', help='instalar paquetes')
    

    Esto creará los subparsers con el título ‘comandos’ y las opciones en un grupo separado con el título ‘opciones’.

Comments are closed.