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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-09 00:33:111015Durchsuche

How Can I Suppress Verbose Output from Subprocesses in Python?

Übermäßige Ausgabe von Unterprozessen dämpfen

Viele Befehlszeilentools wie eSpeak zeigen ausführliche Ausgaben zusammen mit den beabsichtigten Aktionen an. Dies kann die Shell überladen und es schwierig machen, die vorherige Ausgabe zu lesen oder mit der Eingabeaufforderung zu interagieren.

Bei Python-Skripten, die solche Tools mithilfe des Unterprozessmoduls aufrufen, kann das Stummschalten ihrer Ausgabe die Lesbarkeit und Benutzerfreundlichkeit verbessern. Eine effektive Methode besteht darin, die Standardausgabe (STDOUT) und die Standardfehlerausgabe (STDERR) auf ein Nullgerät umzuleiten.

Ausgabe für Python 3.3 umleiten

Für Python-Versionen 3.3 und höher stellt das Unterprozessmodul bereit die DEVNULL-Konstante als Nullgerät. Durch die Übergabe von DEVNULL an die stdout- und stderr-Argumente von subprocess.call() wird die Ausgabe des Unterprozesses effektiv unterdrückt.

import subprocess

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

Ausgabe für Python 2 und niedriger umleiten

In früheren Versionen In Python, einschließlich 2.7, ist die DEVNULL-Konstante nicht verfügbar. Stattdessen kann man manuell ein Null-Gerät öffnen und dorthin umleiten.

import os

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

Shell-Skript-Äquivalent

Das Befehlszeilen-Äquivalent des obigen Python-Codes ist:

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

Durch den Einsatz dieser Techniken können Sie die ausführliche Unterprozessausgabe Ihrer Python-Skripte stummschalten, wodurch die Shell sauber bleibt und die Lesbarkeit für weitere Interaktionen verbessert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich die ausführliche 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