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 imprimir el uso y la ayuda de todos los objetos argparser?

Tengo múltiples ArgumentParser() en mi script de Python. Sin embargo, cuando lo ejecuto con -h, la ayuda solo se imprime para el primer argparser cuyos argumentos fueron analizados.

Código:

%%writefile ./test_argparse.py
import argparse
ap1 = argparse.ArgumentParser()
ap1.add_argument("-a", "--abcd", help="ayuda a")
var1 = ap1.parse_known_args()
ap2 = argparse.ArgumentParser()
ap2.add_argument("-e", "--efgh", help="ayuda e")
var2 = ap2.parse_known_args()

En la terminal ejecutar:

python test_argparse.py --help

Resultado:

uso: test_argparse.py [-h] [-a ABCD]

argumentos opcionales:
  -h, --help            muestra este mensaje de ayuda y sale
  -a ABCD, --abcd ABCD  ayuda a

Como puedes ver, tanto el uso como la ayuda se muestran solo para `ap1`

Quiero poder mostrar el uso y la ayuda tanto para ap1 como para ap2. ¿Cómo puedo lograr eso?

Tags:  ,

Answer

  1. Avatar for davy.ai
    import argparse
    
    # crear el parser padre
    parent_parser = argparse.ArgumentParser(description='Descripción para el parser padre')
    
    # crear el primer sub-parser y agregar argumentos
    ap1 = parent_parser.add_argument_group('Grupo 1: descripción para ap1')
    ap1.add_argument("-a", "--abcd", help="ayuda a")
    var1 = ap1.parse_known_args()
    
    # crear el segundo sub-parser y agregar argumentos
    ap2 = parent_parser.add_argument_group('Grupo 2: descripción para ap2')
    ap2.add_argument("-e", "--efgh", help="ayuda e")
    var2 = ap2.parse_known_args()
    
    # analizar los argumentos de la línea de comandos
    args = parent_parser.parse_args()
    

    En este código, creamos un parser padre utilizando la función argparse.ArgumentParser() y le damos una descripción. Luego, agregamos sub-parsers al parser padre utilizando el método add_argument_group(), y agregamos argumentos a los sub-parsers utilizando el método add_argument().

    Finalmente, analizamos los argumentos de la línea de comandos utilizando el método parse_args(). Ahora, si ejecutamos este script con la opción -h, veremos los mensajes de ayuda para ambos sub-parsers:

    usage: test_argparse.py [-h] [-a ABCD] [-e EFGH]
    
    Descripción para el parser padre
    
    optional arguments:
      -h, --help            Mostrar este mensaje de ayuda y salir
    
    Grupo 1: descripción para ap1:
      -a ABCD, --abcd ABCD  ayuda a
    
    Grupo 2: descripción para ap2:
      -e EFGH, --efgh EFGH  ayuda e
    

Comments are closed.