Stellen Sie die Standardausgabe einer Funktion in Python still, ohne sys.stdout in den Papierkorb zu werfen und jeden Funktionsaufruf wiederherzustellen

Gibt es in Python eine Möglichkeit, stdout zum Schweigen zu bringen, ohne einen Funktionsaufruf wie den folgenden zu schließen?

Ursprünglicher gebrochener Code:

from sys import stdout
from copy import copy
save_stdout = copy(stdout)
stdout = open('trash','w')
foo()
stdout = save_stdout

Bearbeiten: Korrigierter Code von Alex Martelli

import sys
save_stdout = sys.stdout
sys.stdout = open('trash', 'w')
foo()
sys.stdout = save_stdout

Dieser Weg funktioniert, scheint aber furchtbar ineffizient zu sein. Dortha um ein besserer Weg zu sein. Irgendwelche Ideen

Antworten auf die Frage(16)

Ihre Antwort auf die Frage