Comment exécuter un programme Python depuis la ligne de commande

PythonBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez la compétence fondamentale d'exécuter des programmes Python depuis la ligne de commande. Cette méthode est essentielle pour l'automatisation, le scripting et le déploiement d'applications. Nous vous guiderons dans la création d'un script Python, son exécution et le passage d'arguments, le tout dans l'interface de ligne de commande.

Créer et exécuter un script Python simple

La manière la plus courante d'exécuter un programme Python est d'écrire votre code dans un fichier avec une extension .py, puis d'exécuter ce fichier à l'aide de l'interpréteur Python depuis votre terminal. Commençons par créer un programme classique "Hello, World!".

Tout d'abord, vous devez créer un nouveau fichier. Dans l'explorateur de fichiers du WebIDE, sur la gauche, faites un clic droit sur l'espace vide dans le répertoire project et sélectionnez "New File". Nommez le fichier hello.py.

Ensuite, ouvrez le fichier hello.py et ajoutez le code Python suivant. Ce code utilise la fonction intégrée print() pour afficher un message dans la console.

print("Hello, LabEx!")

Maintenant que vous avez créé le script, vous pouvez l'exécuter. Ouvrez le terminal intégré dans votre WebIDE (s'il n'est pas déjà ouvert, vous pouvez utiliser le menu Terminal > New Terminal). Le terminal devrait s'ouvrir dans le répertoire /home/labex/project, où vous avez enregistré votre fichier.

Pour exécuter le script, tapez la commande python suivie du nom de votre fichier :

python hello.py

Après avoir appuyé sur Entrée, vous verrez la sortie de votre script s'afficher directement dans le terminal.

Hello, LabEx!

Vous avez créé et exécuté avec succès votre premier script Python depuis la ligne de commande.

Utilisation des arguments de ligne de commande

L'exécution de scripts depuis la ligne de commande devient encore plus puissante lorsque vous pouvez leur transmettre des informations à l'exécution. Ces informations sont appelées arguments de ligne de commande. Le module sys de Python offre un moyen simple d'y accéder.

Créons un nouveau script qui salue un utilisateur par son nom, le nom étant fourni comme argument de ligne de commande.

Créez un nouveau fichier nommé greet.py dans le répertoire /home/labex/project.

Ajoutez le code suivant à greet.py. Ce script importe le module sys. Les arguments de ligne de commande sont stockés dans la liste sys.argv. sys.argv[0] est toujours le nom du script lui-même, et les arguments suivants commencent à partir de sys.argv[1].

import sys

## Récupère le nom du premier argument de ligne de commande
name = sys.argv[1]

print(f"Hello, {name}!")

Maintenant, exécutez ce script depuis le terminal, mais cette fois, ajoutez un nom après le nom du fichier du script. Par exemple, utilisons "World".

python greet.py World

Le script prendra "World" comme argument et l'utilisera dans la sortie.

Hello, World!

Vous pouvez essayer de l'exécuter avec votre propre nom pour voir comment la sortie change.

python greet.py LabEx
Hello, LabEx!

Cette technique rend vos scripts flexibles et réutilisables pour différentes entrées.

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.

Résumé

Dans ce laboratoire, vous avez acquis les compétences essentielles pour exécuter des programmes Python depuis la ligne de commande. Vous avez commencé par créer et exécuter un script simple. Ensuite, vous êtes passé à la rendre de vos scripts plus dynamiques et interactifs en utilisant les arguments de ligne de commande via le module sys. Enfin, vous avez appris à rendre vos scripts plus robustes en gérant les cas où les arguments pourraient manquer. Ce sont des compétences fondamentales pour tout développeur Python souhaitant créer des outils en ligne de commande ou automatiser des tâches.