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=Truezusammen mittext=Trueliefert Zeichenketten instdoutundstderr.- Führen Sie Datenströme mit
stderr=subprocess.STDOUTzusammen; mitDEVNULLunterdrücken Sie sie. - Übergeben Sie Eingaben mit
input=;check_outputist 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.