Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich die Ausgabe von Unterprozessen in Python unterdrücken?

Wie kann ich die Ausgabe von Unterprozessen in Python unterdrücken?

Susan Sarandon
Susan SarandonOriginal
2024-12-16 19:22:11574Durchsuche

How Can I Suppress Subprocess Output in Python?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn