Capturer la sortie
Lire stdout et stderr
Capturer la sortie est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.
Capturer stdout
Pour lire ce qu'une commande affiche, transmettez capture_output=True. Le texte apparaît dans l'attribut stdout du résultat.
import subprocess
cp = subprocess.run(['echo', 'hello'], capture_output=True)
print(cp.stdout)Octets et texte
Par défaut, la sortie est constituée d'octets. Transmettez text=True pour obtenir plutôt des chaînes décodées, ce qui est généralement ce que vous souhaitez.
import subprocess
cp = subprocess.run(['echo', 'hello'], capture_output=True, text=True)
print(repr(cp.stdout))Supprimer le saut de ligne final
La sortie d'une commande se termine souvent par un saut de ligne. Utilisez .strip() pour le supprimer avant d'utiliser la valeur.
import subprocess
cp = subprocess.run(['echo', 'value'], capture_output=True, text=True)
clean = cp.stdout.strip()
print('[' + clean + ']')Capturer stderr
Les erreurs sont généralement envoyées vers stderr, qui est capturé séparément. La sortie normale et les messages d'erreur restent ainsi distincts.
import subprocess
cp = subprocess.run(['ls', '/no/such/dir'], capture_output=True, text=True)
print('stdout:', repr(cp.stdout))
print('stderr:', cp.stderr.strip())Utiliser la sortie dans le code
La sortie capturée n'est qu'une chaîne : vous pouvez donc l'analyser, découper ses lignes, convertir les nombres ou la transmettre au reste de votre programme.
import subprocess
cp = subprocess.run(['printf', 'a\nb\nc\n'], capture_output=True, text=True)
lines = cp.stdout.splitlines()
print('line count:', len(lines))
print(lines)Rediriger stderr vers stdout
Pour fusionner la sortie des erreurs avec le flux normal, définissez stderr=subprocess.STDOUT. Les deux apparaîtront alors dans stdout.
import subprocess
cp = subprocess.run(['ls', '/no/such/dir'], stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, text=True)
print(cp.stdout.strip())Fournir une entrée
Transmettez des données à l'entrée standard d'une commande avec l'argument input. Ici, nous envoyons du texte à cat par un tube.
import subprocess
cp = subprocess.run(['cat'], input='piped in\n', capture_output=True, text=True)
print(cp.stdout.strip())Raccourci check_output
subprocess.check_output() exécute une commande et renvoie directement sa sortie standard, en levant une exception en cas d'échec. C'est une manière pratique de capturer une sortie en une seule ligne.
import subprocess
out = subprocess.check_output(['echo', 'quick'], text=True)
print(out.strip())Ignorer la sortie
Pour faire taire une commande, redirigez ses flux vers subprocess.DEVNULL.
import subprocess
cp = subprocess.run(['echo', 'silent'], stdout=subprocess.DEVNULL)
print('return code only:', cp.returncode)Gérer les erreurs avec la sortie
Lorsque vous utilisez check=True, l'objet CalledProcessError levé contient toujours la output et la stderr capturées pour faciliter le diagnostic.
import subprocess
try:
subprocess.run(['ls', '/missing'], capture_output=True, text=True, check=True)
except subprocess.CalledProcessError as e:
print('failed:', e.returncode)
print('stderr:', e.stderr.strip())Mettre tout ensemble
Une fonction utilitaire classique exécute une commande, vérifie sa réussite et renvoie du texte nettoyé. Elle regroupe le schéma courant.
import subprocess
def capture(cmd):
cp = subprocess.run(cmd, capture_output=True, text=True, check=True)
return cp.stdout.strip()
print(capture(['echo', 'final result']))Vérification rapide
Vérifiez votre compréhension de la capture de sortie.
Récapitulatif
Vous avez appris à capturer la sortie :
capture_output=Trueassocié àtext=Truefournit des chaînesstdoutetstderr.- Fusionnez les flux avec
stderr=subprocess.STDOUT; faites-les taire avecDEVNULL. - Transmettez l'entrée avec
input=;check_outputest un raccourci. - Les erreurs contiennent la sortie capturée pour faciliter le débogage.
Ensuite : lire les variables d'environnement et découvrir le module os.
Questions Fréquemment Posées
La leçon « Capturer la sortie » est-elle gratuite ?
Oui — le texte complet de « Capturer la sortie » 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 « Capturer la sortie » ?
Lire stdout et stderr 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 2 sur 4.
Combien de temps prend la leçon « Capturer la sortie » ?
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
- Exécuter des commandes avec subprocess
- Capturer la sortie
- Environnement et module os
- shutil pour les opérations sur les fichiers