Rendre les scripts plus robustes
Que se passe-t-il si vous exécutez le script greet.py de l'étape précédente sans fournir de nom ? Essayons.
python greet.py
Vous rencontrerez une erreur.
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
Cette IndexError se produit car le script tente d'accéder à sys.argv[1], mais comme aucun argument n'a été fourni, cet index n'existe pas. Un script robuste devrait gérer ces cas avec élégance.
Modifions greet.py pour vérifier si un argument a été fourni. Sinon, il utilisera un nom par défaut. Nous pouvons vérifier le nombre d'éléments dans la liste sys.argv en utilisant la fonction len(). Si len(sys.argv) est supérieur à 1, cela signifie qu'au moins un argument a été fourni.
Mettez à jour votre fichier greet.py avec le code suivant :
import sys
if len(sys.argv) > 1:
## Utilise l'argument fourni s'il existe
name = sys.argv[1]
else:
## Utilise un nom par défaut si aucun argument n'est fourni
name = "World"
print(f"Hello, {name}!")
Maintenant, votre script est plus robuste. Exécutez-le à nouveau sans argument :
python greet.py
Cette fois, il s'exécute sans erreur et utilise le nom par défaut.
Hello, World!
Et il fonctionne toujours correctement lorsque vous fournissez un argument :
python greet.py LabEx
Hello, LabEx!
La gestion des erreurs potentielles et la fourniture de comportements par défaut sont des pratiques clés pour écrire des applications en ligne de commande fiables.