Unterdrückung der Subprozessausgabe
Beim Aufrufen externer Programme mithilfe der Subprozessbibliothek von Python kann deren Konsolenausgabe zu einem Ärgernis werden, insbesondere bei ausführlichen Anwendungen wie eSpeak. Dieses Problem entsteht, wenn eSpeak neben dem beabsichtigten Audio auch Diagnosemeldungen ausgibt, die die Shell überladen und nachfolgende Interaktionen behindern.
Um dieses Problem zu lösen, können wir eine Technik anwenden, die als Ausgabeumleitung bekannt ist. In Python >= 3.3 kann das DEVNULL-Gerät verwendet werden, um sowohl Standardausgabe- als auch Fehlerströme an ein Nullziel umzuleiten und sie so effektiv zum Schweigen zu bringen:
import os import subprocess retcode = subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
Für Python < 3.3, einschließlich 2.7, kann der folgende Ansatz verwendet werden:
FNULL = open(os.devnull, 'w') retcode = subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)
Diese Methode entspricht der Ausführung des folgenden Shell-Befehls:
retcode = os.system("echo 'foo' > /dev/null")Diese Technik stellt sicher, dass die unerwünschte Ausgabe von eSpeak wird unterdrückt, sodass die Shell sauber und bereit für weitere Benutzerinteraktionen bleibt.
Das obige ist der detaillierte Inhalt vonWie kann ich die Ausgabe von Unterprozessen in Python unterdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!