Récupérer les arguments de la ligne de commande avec sys.argv en Python

1. À propos de sys.argv

Le module sys de Python fournit différentes fonctions et variables permettant d'interagir avec l'environnement d'exécution de l'interpréteur. Parmi elles, sys.argv permet de récupérer les arguments transmis à un programme Python depuis la ligne de commande.

sys.argv est une liste Python. Son premier élément, sys.argv[0], correspond généralement au nom ou au chemin du script exécuté. Les éléments suivants correspondent aux arguments fournis par l'utilisateur.

Le programme suivant affiche simplement le contenu de sys.argv. Supposons que ce programme soit enregistré dans un fichier nommé programme.py.

Si nous exécutons le programme avec la commande suivante :

Sortie :

Nous constatons que programme.py occupe l'indice 0, tandis que Python et 25 correspondent aux arguments fournis dans la ligne de commande.

2. Afficher les arguments avec sys.argv

La variable sys.argv peut être affichée comme n'importe quelle autre liste Python. Chaque argument fourni dans la ligne de commande devient un élément de cette liste.

Le programme suivant affiche tous les arguments reçus par le script.

Exécutons le programme avec :

Sortie :

Les arguments sont séparés par des espaces dans la commande. Lorsqu'un argument doit contenir des espaces, il faut généralement le placer entre guillemets dans le terminal.

Le programme précédent peut par exemple être exécuté avec la commande suivante :

Sortie :

3. Accéder aux arguments individuellement

Comme sys.argv est une liste, nous pouvons accéder à chaque argument à l'aide de son indice. L'élément sys.argv[0] représente le script, sys.argv[1] le premier argument utilisateur, sys.argv[2] le deuxième, et ainsi de suite.

Le programme suivant récupère deux arguments individuellement.

Exécutons le programme avec :

Sortie :

Nous pouvons également récupérer uniquement les arguments fournis par l'utilisateur grâce au slicing sys.argv[1:].

Exécutons le programme avec :

Sortie :

4. Connaître le nombre d'arguments

La fonction len() permet de connaître le nombre d'éléments contenus dans sys.argv. Il faut cependant tenir compte du fait que le premier élément correspond au script lui-même.

Le programme suivant affiche le nombre total d'éléments de sys.argv ainsi que le nombre d'arguments réellement fournis par l'utilisateur.

Exécutons le programme avec :

Sortie :

Une autre solution consiste à utiliser sys.argv[1:] afin d'exclure directement le nom du script.

Exécutons le programme avec :

Sortie :

5. Parcourir les arguments de la ligne de commande

Comme sys.argv est une liste, nous pouvons la parcourir avec une boucle for. Pour afficher uniquement les arguments saisis par l'utilisateur, nous pouvons parcourir sys.argv[1:].

Le programme suivant affiche chaque argument sur une ligne différente.

Exécutons le programme avec :

Sortie :

La fonction enumerate() permet également de numéroter les arguments pendant leur parcours.

Exécutons le programme avec :

Sortie :

6. Convertir les arguments en nombres

Les éléments récupérés avec sys.argv sont des chaînes de caractères. Lorsqu'un argument représente un nombre destiné à un calcul, il faut donc le convertir avec int() ou float().

Le programme suivant récupère deux nombres entiers depuis la ligne de commande et calcule leur somme.

Exécutons le programme avec :

Sortie :

Pour travailler avec des nombres décimaux, nous pouvons utiliser float().

Exécutons le programme avec :

Sortie :

7. Utiliser plusieurs arguments dans un programme

Les arguments de la ligne de commande permettent de rendre un programme plus flexible. L'utilisateur peut fournir les données nécessaires au moment de l'exécution sans modifier le code source.

Le programme suivant reçoit un nom et un âge depuis la ligne de commande.

Exécutons le programme avec :

Sortie :

Nous pouvons également récupérer un nombre variable d'arguments. Le programme suivant calcule la somme de tous les nombres fournis après le nom du script.

Exécutons le programme avec :

Sortie :

8. Gérer les arguments manquants et les erreurs

Accéder directement à sys.argv[1] ou sys.argv[2] peut provoquer une exception IndexError lorsque l'utilisateur ne fournit pas suffisamment d'arguments. Il est donc préférable de vérifier leur nombre avant de les utiliser.

Le programme suivant exige exactement deux arguments utilisateur.

Si nous exécutons le programme sans argument :

Sortie :

Une autre erreur fréquente apparaît lorsque l'utilisateur fournit une valeur qui ne peut pas être convertie en nombre. Une structure try...except permet de gérer l'exception ValueError.

Exécutons le programme avec un argument incorrect :

Sortie :

9. Créer un petit programme avec sys.argv

Un cas pratique consiste à créer une petite calculatrice en ligne de commande. Le premier argument représente l'opération et les deux arguments suivants représentent les nombres à utiliser.

Le programme suivant accepte les opérations addition, soustraction, multiplication et division.

Exécutons le programme avec la commande suivante :

Sortie :

Ce principe permet de créer des programmes utilisables directement depuis un terminal, un script système ou un autre programme.

10. À retenir

La variable sys.argv du module sys permet de récupérer les arguments transmis à un programme Python depuis la ligne de commande.

  • sys.argv est une liste.
  • sys.argv[0] correspond généralement au nom ou au chemin du script exécuté.
  • sys.argv[1] représente le premier argument utilisateur.
  • sys.argv[2] représente le deuxième argument, et ainsi de suite.
  • sys.argv[1:] permet de récupérer uniquement les arguments utilisateur.
  • len(sys.argv) - 1 donne le nombre d'arguments utilisateur.
  • Les arguments récupérés sont des chaînes de caractères.
  • int() et float() permettent de convertir les arguments numériques.
  • Il est conseillé de vérifier le nombre d'arguments avant d'accéder à leurs indices.
  • try...except permet de gérer les erreurs de conversion et de rendre le programme plus robuste.

Le programme suivant rassemble les opérations essentielles : récupération des arguments, vérification de leur nombre, conversion en nombres et utilisation des valeurs.

Exécutons le programme avec :

Sortie :

 


 


Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *