Hacer los Scripts Más Robustos
¿Qué sucede si ejecutas el script greet.py del paso anterior sin proporcionar un nombre? Intentémoslo.
python greet.py
Te encontrarás con un error.
Traceback (most recent call last):
File "/home/labex/project/greet.py", line 4, in <module>
name = sys.argv[1]
IndexError: list index out of range
Este IndexError ocurre porque el script intenta acceder a sys.argv[1], pero como no se proporcionó ningún argumento, este índice no existe. Un script robusto debería manejar estos casos con gracia.
Modifiquemos greet.py para verificar si se proporcionó un argumento. Si no es así, usará un nombre predeterminado. Podemos verificar el número de elementos en la lista sys.argv usando la función len(). Si len(sys.argv) es mayor que 1, significa que se proporcionó al menos un argumento.
Actualiza tu archivo greet.py con el siguiente código:
import sys
if len(sys.argv) > 1:
## Usa el argumento proporcionado si existe
name = sys.argv[1]
else:
## Usa un nombre predeterminado si no se proporciona ningún argumento
name = "World"
print(f"Hello, {name}!")
Ahora, tu script es más robusto. Ejecútalo de nuevo sin un argumento:
python greet.py
Esta vez, se ejecuta sin errores y utiliza el nombre predeterminado.
Hello, World!
Y todavía funciona correctamente cuando proporcionas un argumento:
python greet.py LabEx
Hello, LabEx!
Manejar errores potenciales y proporcionar comportamientos predeterminados son prácticas clave para escribir aplicaciones de línea de comandos confiables.