Argumentos en programas con Python
A través de la terminal, o consola, podemos pasar argumentos en programas con Python como si se tratase de una función. ¿A qué nos referimos con esto? Por lo general, dichos argumentos, determinan alguna acción o configuración inicial del programa, es decir, se especifican luego del nombre del programa y separados por espacios.
Table of Contents
ToggleIntroducción
Supongamos que tenemos un archivo llamado animales.py y que lo ejecutamos desde la terminal del siguiente modo:
python animales.py
Recordemos que Python es un lenguaje interpretado, por tanto los scripts que escribimos son ejecutados por un programa al cual llamamos intérprete. Anteriormente, hicimos referencia al intérprete con la palabra python. Entonces podemos comprobar esto escribiendo lo siguiente (en Windows):
where python
Out:
C:\Users\User\AppData\Local\Programs\Python\Python310\python.exe
C:\Users\User\AppData\Local\Microsoft\WindowsApps\python.exe
O en alguna distribución de Linux:
which python
Out:
/usr/bin/python
Por lo tanto, si Python es el programa ejecutable, los argumentos que recibirá en el caso anterior serán: animales.py y Perro.
Acceder a los argumentos
Para acceder a estos argumentos desde nuestro código, la librería estándar nos provee la lista sys.argv en donde cada uno de los argumentos será una cadena según el orden en que fueron especificados.
De modo que si nuestro archivo animales.py contiene el siguiente código..
import sys
print(«Argumentos:», sys.argv)
Al ejecutarlo desde la consola veremos impreso lo siguiente:
python animales.py Perro
Out:
Argumentos: [‘animales.py’, ‘Perro’]
Comprobemos esto creando el archivo y código desde la consola:
La lista sys.argv siempre contendrá, por lo menos, un elemento. El nombre de nuestro archivo de Python (en este caso, animales.py).
Algunos ejemplos
Todos los elementos subsiguientes habrán sido pasados a través de la terminal tal como acabamos de hacerlo. Entonces, si queremos que nuestro programa muestre el nombre de una persona al dato que recibió como argumento a través de la consola, haremos:
import sys
nombre = sys.argv[1]
print(«¡Hola» + nombre + «!»)
Puede ocurrir que el usuario se haya olvidado de proveer su nombre. En dicho caso, por tratarse de una lista convencional, vamos a capturar la excepción IndexError:
import sys
try:
nombre = sys.argv[1]
print(«Hola» + nombre + «!»)
except IndexError:
print(«No me has dicho tu nombre!»)
Ahora bien, haremos que el programa imprima un saludo para cada uno de los perros que se hayan pasado como argumentos, es decir, separados por espacios.
Entonces podríamos hacer:
import sys
#Usamos la propiedad de “slicing” para ignorar el primer argumento.
perros = sys.argv[1:]
#Chequeamos que la lista no esté vacía.
if perros:
for nombre in perros:
print(f»¡Hola, {nombre}!»)
else:
print(«No has indicado ningún nombre.»)
¿Cómo deberíamos invocar este programa? De la siguiente forma:
python animales.py Snoopy Goofy
Y el resultado en pantalla es:
¡Hola, Snoopy!
¡Hola, Goofy!