Argumentos de la línea de comandos en Python

Manav Narula 30 enero 2023
  1. Utilice el módulo sys para procesar argumentos de la línea de comandos en Python
  2. Utilice el módulo getopt para procesar argumentos de la línea de comandos en Python
  3. Utilice el módulo argparse para procesar argumentos de la línea de comandos en Python
Argumentos de la línea de comandos en Python

Los argumentos de la línea de comandos son aquellos valores que se proporcionan en la ventana de la línea de comandos mientras se ejecuta el archivo. Son acomodaticios porque nos permite pasar los valores mientras ejecutamos el programa.

En Python, se pueden usar diferentes módulos para procesar argumentos de línea de comandos, que se analizan a continuación.

Utilice el módulo sys para procesar argumentos de la línea de comandos en Python

El sys.argv() se utiliza para almacenar los argumentos proporcionados en la línea de comando en una estructura de tipo lista. El nombre del archivo se considera el primer argumento.

Por ejemplo,

import sys

print("Arguments without the script name ", (len(sys.argv) - 1))
print("Arguments given ")
for i in range(1, len(sys.argv)):
    print(sys.argv[i])

En el ejemplo anterior, pasamos algunos argumentos en tiempo de ejecución y mostramos el número total de argumentos y sus valores.

Utilice el módulo getopt para procesar argumentos de la línea de comandos en Python

El módulo getopt también procesa argumentos de línea de comando. Nos permite validar los valores dados. Podemos proporcionar valores con el argumento junto con cadenas de opciones que el script pueda reconocer. Este módulo trabaja con el módulo sys para un mejor procesamiento.

El constructor getopt() se utiliza para inicializar el objeto, que analiza los argumentos. Devuelve un getopt.error cuando la opción no se reconoce en la lista de argumentos.

Lo usamos en el siguiente código.

import getopt
import sys

lst = sys.argv[1:]
options = "abc:"
long_options = ["A_Message", "B_Message", "C_Message"]

try:

    arguments, values = getopt.getopt(lst, options, long_options)

    for currentArgument, currentValue in arguments:

        if currentArgument in ("-a", "--A_Message"):
            print("Message A received")
        elif currentArgument in ("-b", "--B_Message"):
            print("Message B received")
        elif currentArgument in ("-c", "--C_Message"):
            print("Message C received")

except getopt.error as err:
    print("Error")

Utilice el módulo argparse para procesar argumentos de la línea de comandos en Python

El módulo argparse es, con mucho, el módulo más conveniente para trabajar con argumentos de línea de comandos. Este módulo ofrece mucha flexibilidad ya que puede manejar argumentos posicionales, argumentos opcionales y también especificar su tipo.

Podemos poner algunos valores predeterminados en caso de que falte algún argumento e incluso mostrar un mensaje de ayuda.

La función ArgumentParser() crea un objeto analizador. La función parse.args() lee los argumentos de la línea de comandos.

Por ejemplo,

import argparse

parser = argparse.ArgumentParser(description="Which Message?")
parser.add_argument("a")
parser.add_argument("b")
args = parser.parse_args()
print(args.a, args.b)
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn