0Pricing
Python Academy · Leçon

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=True associé à text=True fournit des chaînes stdout et stderr.
  • Fusionnez les flux avec stderr=subprocess.STDOUT ; faites-les taire avec DEVNULL.
  • Transmettez l'entrée avec input= ; check_output est 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

  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