Analizar argumentos de la línea de comandos con Python
Mientras ejecutamos programas de Python desde la línea de comandos o el shell, podemos pasar valores en forma de cadenas, técnicamente, argumentos u opciones, al programa. El programa puede acceder a estos valores y realizar su ejecución e incluso utilizar estos valores para el cálculo.
Este artículo hablará sobre cómo podemos analizar estos argumentos de la línea de comandos usando Python y usarlos.
Analizar argumentos de la línea de comandos mediante el módulo optparse
El módulo optparse
es un paquete de Python flexible y conveniente para analizar las opciones de la línea de comandos. Viene integrado con el Python estándar. Utiliza una metodología declarativa para analizar las opciones de la línea de comandos. Para utilizar este paquete, primero tenemos que crear un objeto de la clase OptionParser
y luego agregar detalles sobre las posibles opciones o argumentos con la ayuda del método add_option()
. El método add_option()
acepta argumentos como option
(el nombre de la opción), type
(el tipo de datos de la opción), help
(el texto de ayuda para la opción) y default
(el valor predeterminado para la opción, si no se especifica en el comando). Para obtener las opciones y sus valores del comando de la línea de comandos en forma de diccionario, podemos usar el método parse_args()
.
Comprendamos mejor el uso de esta biblioteca con la ayuda de un ejemplo. Implementaremos un programa Python simple que verificará tres opciones: -a
, -b
y -c
. Aquí, -a
y -b
representan los operandos, +
es el operador y -c
es esencialmente la suma objetivo. Además, el código comprobará estos valores, les asignará el valor 0
si no se encuentra ningún valor en el comando de la línea de comandos y, por último, comprobará si a + b
es igual a c
o no. Además, también imprimirá los resultados en una cadena bien formateada.
import optparse
parser = optparse.OptionParser()
parser.add_option("-a", help="First Number", default=0)
parser.add_option("-b", help="Second Number", default=0)
parser.add_option("-c", help="Sum", default=0)
options, args = parser.parse_args()
a = int(options.a)
b = int(options.b)
c = int(options.c)
s = a + b
print(f"{a} + {b} = {s} and {s} {'==' if s == c else '!='} {c}")
Aquí hay una breve explicación del código anterior. Primero, crea un objeto de clase OptionParser()
y agrega información sobre las tres opciones de destino; -a
, -b
y -c
. Luego atraviesa la línea de comando o el comando de shell para verificar las opciones requeridas. Por último, almacena todos los valores en variables independientes, calcula la suma o a + b
y la compara con la suma objetivo o c
.
Probemos este programa para los siguientes comandos.
python main.py -a 1 -b 2 -c 3
python main.py -a 1
python main.py -b 2
python main.py -c 3
python main.py 1 2 3
python main.py -a 1 2 3
python main.py 1 -b 2 3
python main.py 1 2 -c 3
python main.py 0 0 0
python main.py
Producción :
1 + 2 = 3 and 3 == 3
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
0 + 0 = 0 and 0 == 0
A partir de los resultados, podemos inferir que los valores predeterminados se consideran cuando no se proporcionan opciones de palabras clave o argumentos a la línea de comandos o al comando de shell. Consulte los comandos de prueba excepto el primero (python main.py -a 1 -b 2 -c 3
) para un mejor análisis.