0Pricing
Python Academy · Leçon

Exécuter des commandes avec subprocess

Exécuter des programmes externes

Exécuter des commandes avec subprocess est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce que subprocess

Le module subprocess permet à votre programme Python d'exécuter des commandes externes et d'autres programmes, comme si vous les tapiez dans un terminal.

import subprocess

result = subprocess.run(['echo', 'hello'])
print('return code:', result.returncode)

Bases de subprocess.run

subprocess.run() est le point d'entrée recommandé. Vous transmettez la commande sous la forme d'une liste d'arguments : le nom du programme en premier, puis chaque argument séparément.

import subprocess

result = subprocess.run(['echo', 'one', 'two'])
print('done with code', result.returncode)

Pourquoi une liste plutôt qu'une chaîne

Transmettre une liste évite que l'interpréteur de commandes analyse votre commande, ce qui empêche les erreurs de guillemets et les risques d'injection dans l'interpréteur. Chaque élément constitue un argument.

import subprocess

# Safe: each piece is its own argument
subprocess.run(['echo', 'a file with spaces.txt'])

L'objet CompletedProcess

run() renvoie un objet CompletedProcess contenant args, returncode et, si la sortie a été capturée, cette sortie. Le code 0 indique la réussite.

import subprocess

cp = subprocess.run(['true'])
print('args:', cp.args)
print('returncode:', cp.returncode)

Vérifier les codes de retour

Un code de retour non nul signifie généralement que la commande a échoué. Vous pouvez l'examiner manuellement après l'appel.

import subprocess

cp = subprocess.run(['ls', '/no/such/path'])
if cp.returncode != 0:
    print('command failed with', cp.returncode)

Déclencher une erreur en cas d'échec avec check=True

Transmettez check=True pour que run() lève automatiquement CalledProcessError lorsque la commande se termine avec un code non nul.

import subprocess

try:
    subprocess.run(['false'], check=True)
except subprocess.CalledProcessError as e:
    print('failed with code', e.returncode)

Transmettre des arguments

Les arguments supplémentaires de la commande sont simplement d'autres éléments de la liste. Ici, nous listons un répertoire dans un format détaillé.

import subprocess

subprocess.run(['echo', '-n', 'no newline'])
print()
print('above echo had -n flag')

Définir un délai d'attente

Utilisez timeout pour interrompre une commande qui s'exécute trop longtemps. Cela lève TimeoutExpired.

import subprocess

try:
    subprocess.run(['sleep', '5'], timeout=0.1)
except subprocess.TimeoutExpired:
    print('command took too long, aborted')

Répertoire de travail

L'argument cwd exécute la commande dans un répertoire précis sans modifier le répertoire de travail de votre propre programme.

import subprocess

subprocess.run(['pwd'], cwd='/tmp')

L'option shell=True

Avec shell=True, vous transmettez une seule chaîne de commande interprétée par l'interpréteur. Cela permet d'utiliser les tubes et les motifs génériques, mais c'est risqué avec une entrée non fiable. Préférez la forme avec une liste.

import subprocess

subprocess.run('echo hello && echo world', shell=True)

Éviter os.system

L'ancien os.system renvoie uniquement un code de sortie et n'offre ni transmission sûre des arguments ni capture de la sortie. subprocess.run le remplace dans tout nouveau code.

import subprocess

# Modern, safe approach
cp = subprocess.run(['echo', 'modern way'])
print('exit code:', cp.returncode)

Vérification rapide

Vérifiez votre compréhension de l'exécution des commandes.

Récapitulatif

Vous avez appris à exécuter des commandes avec subprocess :

  • subprocess.run([...]) exécute un programme externe en toute sécurité.
  • Il renvoie un CompletedProcess contenant returncode.
  • check=True lève une exception en cas d'échec ; timeout interrompt les commandes lentes.
  • Préférez la forme avec une liste à shell=True.

Ensuite : capturer la sortie de la commande.

Questions Fréquemment Posées

La leçon « Exécuter des commandes avec subprocess » est-elle gratuite ?

Oui — le texte complet de « Exécuter des commandes avec subprocess » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Exécuter des commandes avec subprocess » ?

Exécuter des programmes externes Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Python Academy ?

Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Exécuter des commandes avec subprocess » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?

Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Exécuter des commandes avec subprocess
  2. Capturer la sortie
  3. Environnement et module os
  4. shutil pour les opérations sur les fichiers
← Retour à Python Academy