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.

Múltiples argumentos en python argparse

Quiero que mi script pueda tomar varios argumentos con el mismo nombre.

python3 script.py --test test1 --test test2 --test test3 --config config_path

¿Cómo puedo lograr esto? Hasta ahora he intentado con nargs de argparse.


<h1>Mi solución</h1> <p>import argparse</p> <p>parser = argparse.ArgumentParser(description='Arg Parser', formatter<em>class=argparse.ArgumentDefaultsHelpFormatter, allow</em>abbrev=False)</p> <p>parser.add_argument('--test', nargs='+', required=True, \ help='Nombre de los módulos para comprobar', choices=['test1 ', 'test2 ', 'test3 '])</p> <p>parser.add_argument('--config')</p> <p>arg = parser.parse<em>args()</em> <code> Pero su comportamiento es un poco diferente, lo toma en la forma </code> python3 script.py --test test1 test2 --config config_path

¿Alguna sugerencia sobre cómo obtener el comportamiento deseado?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para lograr el comportamiento deseado de tomar múltiples argumentos con el mismo nombre utilizando argparse, puedes usar la acción de append en lugar del parámetro nargs. Aquí tienes un ejemplo:

    import argparse
    
    parser = argparse.ArgumentParser(description='Arg Parser', allow_abbrev=False)
    
    parser.add_argument('--test', action='append', required=True,
                        help='Nombre del módulo para la comprobación de integridad',
                        choices=['test1', 'test2', 'test3'])
    
    parser.add_argument('--config')
    
    args = parser.parse_args()
    
    print(args.test)
    print(args.config)
    

    Con este código, puedes ejecutar el script con múltiples argumentos --test:

    $ python3 script.py --test test1 --test test2 --test test3 --config config_path
    ['test1', 'test2', 'test3']
    config_path
    

    La acción de append creará una lista para el argumento --test y añadirá cualquier nuevo valor a ella.

Comments are closed.