Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich unerwünschte Ausgaben von Unterprozessen in Python unterdrücken?

Wie kann ich unerwünschte Ausgaben von Unterprozessen in Python unterdrücken?

Linda Hamilton
Linda HamiltonOriginal
2024-12-16 04:42:16391Durchsuche

How Can I Suppress Unwanted Output from Subprocesses in Python?

Unterdrückung der Subprozessausgabe in Python

In Python können Subprozesse zur Ausführung verschiedener Systembefehle eingesetzt werden. Während solche Unterprozesse möglicherweise die erforderliche Funktionalität bereitstellen, kann ihre inhärente Ausführlichkeit die Ausgabe überladen und die Lesbarkeit beeinträchtigen. Betrachten Sie insbesondere das vom Benutzer bereitgestellte Beispiel:

import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])

In diesem Fall generiert eSpeak die gewünschte Audioausgabe, erzeugt aber auch unerwünschte Fehlermeldungen. Diese Unordnung der Shell kann es schwierig machen, auf gedruckten Text zuzugreifen oder ihn zu interpretieren. Leider gibt es keine dokumentierte Option zum Deaktivieren der Ausführlichkeit von eSpeak.

Um dieses Problem zu beheben, bietet Python eine praktische Lösung zum Unterdrücken der Subprozessausgabe, sodass Benutzer eine saubere und übersichtliche Shell beibehalten können:

Lösung:

Leiten Sie die Unterprozessausgabe mit dem folgenden Code für Python >= an DEVNULL um 3.3:

import os
import subprocess

retcode = subprocess.call(['echo', 'foo'], 
    stdout=subprocess.DEVNULL,
    stderr=subprocess.STDOUT)

Für Python-Versionen unter 3.3, einschließlich 2.7, verwenden Sie den folgenden Code:

FNULL = open(os.devnull, 'w')
retcode = subprocess.call(['echo', 'foo'], 
    stdout=FNULL, 
    stderr=subprocess.STDOUT)

Diese Technik spiegelt effektiv den folgenden Shell-Befehl wider:

retcode = os.system("echo 'foo' > /dev/null")

Das obige ist der detaillierte Inhalt vonWie kann ich unerwünschte Ausgaben 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