Lathack

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.

Introducció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:

  Argumentos en Programas con Python

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!

Deja un comentario

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

3 + cinco =

Lathack
Scroll al inicio