Ejecutar funciones con múltiples argumentos en una terminal en Python

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *