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 implementar una distinción lógica en los argumentos de línea de comandos para los scripts de Python?

Quiero poder pasar argumentos que serán utilizados posteriormente en múltiples scripts de una manera fácil de leer (básicamente agrupados para cada script). Puedo dar un ejemplo:

Se toma de esta respuesta

Utiliza ‘–‘ para separar los argumentos de tu trabajo de los argumentos de gcloud


gcloud dataproc jobs submit pyspark --cluster=my-dataproc \
test-pyspark.py -- 7day 2017-11-01

Algo exactamente como esto. dataproc tiene ‘–‘ para demarcar un conjunto de argumentos de otro. ¿Cómo puedo implementar esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto en tus propios scripts, puedes utilizar el módulo argparse en Python. Este módulo te permite definir argumentos y opciones de manera estructurada y analizarlos fácilmente. Puedes definir grupos de argumentos separados para cada script y agrupar los argumentos relacionados juntos.

    Aquí tienes un ejemplo de implementación:

    import argparse
    
    parser = argparse.ArgumentParser(description='Procesar algunos argumentos.')
    
    # definir grupo de argumentos para el script 1
    script1_args = parser.add_argument_group('Argumentos del script 1')
    script1_args.add_argument('--script1-arg1', help='mensaje de ayuda para script1-arg1')
    script1_args.add_argument('--script1-arg2', help='mensaje de ayuda para script1-arg2')
    
    # definir grupo de argumentos para el script 2
    script2_args = parser.add_argument_group('Argumentos del script 2')
    script2_args.add_argument('--script2-arg1', help='mensaje de ayuda para script2-arg1')
    script2_args.add_argument('--script2-arg2', help='mensaje de ayuda para script2-arg2')
    
    # analizar los argumentos
    args = parser.parse_args()
    
    # acceder a los argumentos del script 1
    if args.script1_arg1:
        print('Argumento 1 del script 1:', args.script1_arg1)
    if args.script1_arg2:
        print('Argumento 2 del script 1:', args.script1_arg2)
    
    # acceder a los argumentos del script 2
    if args.script2_arg1:
        print('Argumento 1 del script 2:', args.script2_arg1)
    if args.script2_arg2:
        print('Argumento 2 del script 2:', args.script2_arg2)
    

    Con esta implementación, puedes agrupar argumentos relacionados usando add_argument_group(). Esto crea una sección separada en el mensaje de ayuda con el nombre que especifiques. Luego, puedes agregar argumentos individuales a cada grupo usando add_argument(). Finalmente, puedes analizar los argumentos usando parse_args() y acceder a ellos utilizando los nombres de los argumentos que definiste anteriormente.

    Puedes llamar a este script con argumentos de la siguiente manera:

    python myscript.py --script1-arg1 valor1 --script2-arg2 valor2
    

    Esto pasará los argumentos a cada script en un formato estructurado y fácil de leer.

Comments are closed.