Exécuter un programme depuis le terminal
Au-delà d’IDLE
Section intitulée « Au-delà d’IDLE »Jusqu’ici, les programmes créés sont exécutés directement depuis IDLE. C’est pratique pour faire ses premiers en programmation avec Python, mais dans la pratique, les programmes Python sont exécutés depuis le terminal (aussi appelé invite de commande, console ou shell).
Le terminal est une interface textuelle qui permet d’interagir avec l’ordinateur en tapant des commandes. Ces commandes sont interprétées par le système d’exploitation pour effectuer différentes actions, comme naviguer dans les fichiers ou exécuter des programmes, par exemple ceux qu’on crée en Python.
Ouvrir le terminal
Section intitulée « Ouvrir le terminal »- Recherche cmd ou PowerShell dans le menu Démarrer
- Ou tape Win + R, puis
cmdet Entrée
- Ouvre Terminal depuis Applications → Utilitaires
- Ou utilise Spotlight (Cmd + Espace) et tape
Terminal
- Ouvre Terminal depuis les applications
- Ou utilise le raccourci Ctrl + Alt + T
Lancer un programme Python
Section intitulée « Lancer un programme Python »Pour exécuter un fichier Python, tape python suivi du nom du fichier :
python mon_programme.pyLe répertoire de travail
Section intitulée « Le répertoire de travail »Le terminal travaille toujours dans un répertoire courant.
Pour exécuter ton fichier, tu dois d’abord te placer dans le bon dossier avec cd (change directory) :
cd Documents/cours-pythonpython devinette.pyPasser des arguments au programme
Section intitulée « Passer des arguments au programme »Quand tu appelles une fonction, tu lui passes des arguments entre parenthèses :
calculer_imc(70, 1.75)Un programme peut recevoir des arguments de la même façon. Depuis le terminal, les arguments sont spécifiés après le nom du fichier :
python devinette.py 1 1000Ici, 1 et 1000 sont les arguments du programme devinette.py.
sys.argv — les arguments en Python
Section intitulée « sys.argv — les arguments en Python »Le module sys fournit la variable sys.argv : une liste contenant tous les arguments passés en ligne de commande.
import sys
print("Arguments reçus :", sys.argv)print("Nombre d'arguments :", len(sys.argv))python mon_programme.py bonjour 42Résultat de l’exécution
Section intitulée « Résultat de l’exécution »Arguments reçus : ['mon_programme.py', 'bonjour', '42']Nombre d'arguments : 3Décomposons sys.argv :
sys.argv = ['mon_programme.py', 'bonjour', '42'] ↑ ↑ ↑ sys.argv[0] sys.argv[1] sys.argv[2] nom du fichier 1er argument 2e argumentExemples
Section intitulée « Exemples »Exemple 1 : salutation personnalisée
Section intitulée « Exemple 1 : salutation personnalisée »import sys
prenom = sys.argv[1]print("Bonjour", prenom, "!")python saluer.py AliceRésultat de l’exécution
Section intitulée « Résultat de l’exécution »Bonjour Alice !Simple et direct : le programme prend un nom et salue.
Exemple 2 : calculatrice en ligne de commande
Section intitulée « Exemple 2 : calculatrice en ligne de commande »import sys
a = float(sys.argv[1])operation = sys.argv[2]b = float(sys.argv[3])
match operation: case "+": resultat = a + b case "-": resultat = a - b case "*": resultat = a * b case "/": if b == 0: print("Erreur : division par zéro") resultat = None else: resultat = a / b case _: print("Opération non reconnue :", operation) resultat = None
if resultat is not None: print(a, operation, b, "=", resultat)python calculatrice.py 15 + 27python calculatrice.py 100 / 3python calculatrice.py 2 "*" 8Résultat de l’exécution
Section intitulée « Résultat de l’exécution »15.0 + 27.0 = 42.0100.0 / 3.0 = 33.3333333333333362.0 * 8.0 = 16.0Exemple 3 : arguments avec valeurs par défaut
Section intitulée « Exemple 3 : arguments avec valeurs par défaut »Comme pour les paramètres optionnels d’une fonction, on peut donner des valeurs par défaut aux arguments manquants.
On vérifie la longueur de sys.argv :
import sysimport random
minimum = int(sys.argv[1]) if len(sys.argv) > 1 else 1maximum = int(sys.argv[2]) if len(sys.argv) > 2 else 100
print("=== JEU DE DEVINETTES ===")print("Nombre entre", minimum, "et", maximum)
secret = random.randint(minimum, maximum)tentatives = 0
while True: reponse = int(input("Ta proposition : ")) tentatives = tentatives + 1
if reponse < secret: print("Trop petit !") elif reponse > secret: print("Trop grand !") else: print("Bravo ! Trouvé en", tentatives, "tentatives !") breakpython devinette.py # Défaut : 1 à 100python devinette.py 1 10 # Facilepython devinette.py 1 1000 # DifficileLe patron int(sys.argv[n]) if len(sys.argv) > n else valeur_defaut est l’équivalent terminal des valeurs par défaut d’une fonction.
Gérer les erreurs d’arguments
Section intitulée « Gérer les erreurs d’arguments »Dans un vrai programme, il faut prévoir le cas où l’utilisateur ne fournit pas les bons arguments.
Vérifier le nombre d’arguments
Section intitulée « Vérifier le nombre d’arguments »import sys
if len(sys.argv) != 3: print("Usage : python imc.py <poids_kg> <taille_m>") print("Exemple : python imc.py 70 1.75") sys.exit(1)
poids = float(sys.argv[1])taille = float(sys.argv[2])imc = poids / taille ** 2print("IMC :", format(imc, ".2f"))python imc.pyRésultat de l’exécution
Section intitulée « Résultat de l’exécution »Usage : python imc.py <poids_kg> <taille_m>Exemple : python imc.py 70 1.75Un message d’aide utile
Section intitulée « Un message d’aide utile »Bonne pratique : quand un programme reçoit de mauvais arguments, il affiche un message d’usage (usage message) qui explique comment l’utiliser. C’est l’équivalent de la documentation d’une fonction.
if len(sys.argv) < 2: print("Usage : python programme.py <argument1> [argument2]") print() print(" argument1 Description obligatoire") print(" argument2 Description optionnelle (défaut : 10)") sys.exit(1)Les crochets [ ] indiquent par convention un argument optionnel.
En résumé
Section intitulée « En résumé »| Commande | Effet |
|---|---|
python fichier.py | Exécute le programme |
python fichier.py arg1 arg2 | Exécute avec des arguments |
sys.argv | Liste des arguments (toujours des str) |
sys.argv[0] | Nom du fichier |
sys.argv[1], sys.argv[2], … | Arguments passés |
len(sys.argv) | Nombre total d’éléments (fichier + arguments) |
sys.exit(code) | Terminer le programme avec un code de sortie |