Stille den stdout einer Funktion in Python ohne Dresch-sys.stdout und wiederherstellen von jedem Funktionsaufruf

Gibt es eine Möglichkeit in Python zu schweigen stdout ohne Umhüllung eine Funktion aufrufen, wie folgende?

Original Gebrochen-Code:

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

Edit: Korrigierte code von Alex Martelli

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

So funktioniert, scheint aber furchtbar ineffizient. Es hat der bessere Weg zu sein. Irgendwelche Ideen?

Ich würde sagen, Sie sollte es lassen, unkorrigiert, da Alex schon Tat es für Sie. Es würde mehr Sinn machen, ist das Lesen.
Cawas: ich werde meine erste unkorrigierte man wieder oben. Oder etwas ähnliches mit dem gleichen Fehler. Gute Entscheidung,
Verwandte: Vorübergehend Umleiten von stdout/stderr

InformationsquelleAutor Tim McJilton | 2010-05-13

Schreibe einen Kommentar