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