Los argumentos de la línea de comandos son argumentos proporcionados por el usuario en tiempo de ejecución y son ejecutados por las funciones o métodos del programa. Python proporciona múltiples formas de lidiar con este tipo de argumentos. Los tres más comunes son:
- Usando sys.argv
- Usando el módulo getopt/li>
- Usando el módulo argparse
El módulo sys de Python permite el acceso a los argumentos de la línea de comandos con la ayuda del módulo sys. El módulo python sys proporciona funciones y variables que se pueden usar para acceder a diferentes partes del entorno de tiempo de ejecución de Python. Permite el acceso a parámetros y funciones específicos del sistema. Para usar el módulo sys, necesitamos importar el módulo sys en nuestro programa antes de ejecutar cualquier función.
Hay principalmente dos funciones en el módulo sys:
sys.argv : proporciona la lista de argumentos de la línea de comandos. Por ejemplo, sys.argv[0] es el nombre del programa.
len(sys.argv) : proporciona el número de argumentos de la línea de comandos.
Ejemplo 1: este programa demuestra el uso de sys.argv para obtener los argumentos de la línea de comandos y len(sys.argv) proporciona el número total de argumentos de la línea de comandos pasados, incluido el nombre de la secuencia de comandos de python.
# importing the module import sys # storing the arguments program = sys.argv[0] arg1 = sys.argv[1] arg2 = sys.argv[2] arg3 = sys.argv[3] # displaying the program name print("Program name : " + program) # displaying the arguments print("arg1 : " + arg1) print("arg2 : " + arg2) print("arg3 : " + arg3) print("Number of arguments : ", len(sys.argv)) print(sys.argv)
Producción :
Ejemplo 2: este programa demuestra cómo los argumentos de la línea de comandos se pasan a una función mediante sys.argv[index]. Los argumentos de la línea de comandos en los índices 1, 2 y 3 se almacenan en las variables arg1, arg2 y arg3. Las variables arg1, arg2 y arg3 se pasan a la función definida. Sin embargo, los argumentos de la línea de comandos se pueden pasar directamente sin almacenar su valor en variables locales.
# importing the module import sys # function definition def concat(s1, s2, s3): print(s1 + " " + s2 + " " + s3) # fetching the arguments arg1 = sys.argv[1] arg2 = sys.argv[2] arg3 = sys.argv[3] # calling the function concat(arg1, arg2, arg3)
Producción :
Ejemplo 3: este programa demuestra cómo los argumentos de la línea de comandos se pasan a una función mediante sys.argv[index]. Los argumentos de la línea de comando en el índice 1 y 2 se almacenan en las variables arg1 y arg2. Las variables a y b se pasan a la función definida. Los argumentos de la línea de comando se aceptan como strings, por lo tanto, para realizar operaciones numéricas, primero se debe convertir al tipo numérico deseado. Por ejemplo, en este programa, el argumento de la línea de comando se convierte primero en un número entero y luego se almacena en las variables. Sin embargo, los argumentos de la línea de comandos se pueden pasar directamente sin almacenar su valor en variables locales.
# importing the module import sys # function definition def add(a, b): print("Result", a + b) # fetching the arguments arg1 = int(sys.argv[1]) arg2 = int(sys.argv[2]) # displaying the arguments print(arg1, arg2) # calling the function add(arg1, arg2)
Producción :
Uso del módulo argparse
Hay un cierto problema con el método sys.argv, ya que no arroja ningún error específico si no se pasa el argumento o si se pasa un argumento de tipo no válido. El módulo argparse maneja con gracia la ausencia y presencia de parámetros. Los siguientes ejemplos muestran la utilidad del módulo argparse:
# importing the module import argparse # creating an ArgumentParsert object parser = argparse.ArgumentParser() # fetching the arguments parser.add_argument('number', help = "Enter number to triple it.") args = parser.parse_args() # performing some operation print(args.number * 2)
Producción :
Python, por defecto, acepta todos los argumentos de la línea de comandos como tipo de string, por lo que el resultado es 55, es decir. la string se repite dos veces. Sin embargo, podemos especificar el tipo de datos que esperamos en el propio programa para que siempre que se pase un argumento de la línea de comandos se convierta automáticamente en el tipo de datos esperado siempre que sea compatible con el tipo.
# importing the module import argparse # creating an ArgumentParsert object parser = argparse.ArgumentParser() # fetching the arguments parser.add_argument('number', help = "Enter number to double.", type = int) args = parser.parse_args() print(args.number * 2)
Producción :
Podemos mirar los errores generados:
Este argparse arroja un error específico a diferencia del módulo sys. Cualquiera de los módulos puede ser utilizado según conveniencia y requerimiento.
Python proporciona un módulo getopt que permite analizar argumentos de línea de comandos.
Ejemplo :
import sys import getopt def full_name(): first_name = None last_name = None argv = sys.argv[1:] try: opts, args = getopt.getopt(argv, "f:l:") except: print("Error") for opt, arg in opts: if opt in ['-f']: first_name = arg elif opt in ['-l']: last_name = arg print( first_name +" " + last_name) full_name()
Producción :
Publicación traducida automáticamente
Artículo escrito por Shreyasi_Chakraborty y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA