0Pricing
Python Academy · Lektion

Ausgaben erfassen

stdout und stderr lesen

Ausgaben erfassen ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

stdout erfassen

Um zu lesen, was ein Befehl ausgibt, übergeben Sie capture_output=True. Der Text erscheint im Attribut stdout des Ergebnisses.

import subprocess

cp = subprocess.run(['echo', 'hello'], capture_output=True)
print(cp.stdout)

Bytes und Text

Standardmäßig ist die Ausgabe bytes. Übergeben Sie text=True, um stattdessen dekodierte Zeichenketten zu erhalten, was normalerweise das gewünschte Ergebnis ist.

import subprocess

cp = subprocess.run(['echo', 'hello'], capture_output=True, text=True)
print(repr(cp.stdout))

Nachgestellten Zeilenumbruch entfernen

Die Ausgabe von Befehlen endet häufig mit einem Zeilenumbruch. Verwenden Sie .strip(), um ihn zu entfernen, bevor Sie den Wert verwenden.

import subprocess

cp = subprocess.run(['echo', 'value'], capture_output=True, text=True)
clean = cp.stdout.strip()
print('[' + clean + ']')

stderr erfassen

Fehler werden normalerweise an stderr gesendet und separat erfasst. So bleiben die normale Ausgabe und Fehlermeldungen getrennt.

import subprocess

cp = subprocess.run(['ls', '/no/such/dir'], capture_output=True, text=True)
print('stdout:', repr(cp.stdout))
print('stderr:', cp.stderr.strip())

Die Ausgabe im Code verwenden

Erfasste Ausgabe ist einfach eine Zeichenkette, die Sie parsen können: Teilen Sie sie in Zeilen auf, wandeln Sie Zahlen um oder übergeben Sie sie an den restlichen Teil Ihres Programms.

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)

stderr nach stdout umleiten

Um die Fehlerausgabe mit dem normalen Datenstrom zusammenzuführen, setzen Sie stderr=subprocess.STDOUT. Danach erscheint beides in stdout.

import subprocess

cp = subprocess.run(['ls', '/no/such/dir'], stdout=subprocess.PIPE,
                    stderr=subprocess.STDOUT, text=True)
print(cp.stdout.strip())

Eingaben bereitstellen

Übergeben Sie Daten mit dem Argument input an stdin eines Befehls. Hier leiten wir Text an cat weiter.

import subprocess

cp = subprocess.run(['cat'], input='piped in\n', capture_output=True, text=True)
print(cp.stdout.strip())

Die Abkürzung check_output

subprocess.check_output() führt einen Befehl aus und gibt dessen stdout direkt zurück; bei einem Fehler wird eine Ausnahme ausgelöst. Das ist eine praktische Einzeiler-Lösung zum Erfassen der Ausgabe.

import subprocess

out = subprocess.check_output(['echo', 'quick'], text=True)
print(out.strip())

Ausgabe verwerfen

Um einen Befehl stummzuschalten, leiten Sie seine Datenströme an subprocess.DEVNULL um.

import subprocess

cp = subprocess.run(['echo', 'silent'], stdout=subprocess.DEVNULL)
print('return code only:', cp.returncode)

Fehler mit Ausgabe behandeln

Bei Verwendung von check=True enthält der ausgelöste CalledProcessError weiterhin die erfassten Werte output und stderr zur Diagnose.

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())

Alles zusammenführen

Eine typische Hilfsfunktion führt einen Befehl aus, prüft den Erfolg und gibt bereinigten Text zurück. Damit wird das häufige Muster gekapselt.

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']))

Kurztest

Testen Sie Ihr Verständnis der Ausgabenerfassung.

Rückblick

Sie haben gelernt, Ausgaben zu erfassen:

  • capture_output=True zusammen mit text=True liefert Zeichenketten in stdout und stderr.
  • Führen Sie Datenströme mit stderr=subprocess.STDOUT zusammen; mit DEVNULL unterdrücken Sie sie.
  • Übergeben Sie Eingaben mit input=; check_output ist eine Abkürzung.
  • Fehler enthalten die erfasste Ausgabe zur Fehlersuche.

Als Nächstes: Umgebungsvariablen und das os-Modul lesen.

Häufig gestellte Fragen

Ist die Lektion „Ausgaben erfassen“ kostenlos?

Ja — der vollständige Text von „Ausgaben erfassen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Ausgaben erfassen“?

stdout und stderr lesen Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Ausgaben erfassen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Befehle mit subprocess ausführen
  2. Ausgaben erfassen
  3. Umgebung und os-Modul
  4. shutil für Dateioperationen
← Zurück zu Python Academy