Есть ли способ в Python отключить stdout без переноса вызова функции, как показано ниже?
Оригинальный сломанный код:
from sys import stdout
from copy import copy
save_stdout = copy(stdout)
stdout = open('trash','w')
foo()
stdout = save_stdout
Изменить: Исправленный код от Alex Martelli
import sys
save_stdout = sys.stdout
sys.stdout = open('trash', 'w')
foo()
sys.stdout = save_stdout
Этот способ работает, но кажется ужасно неэффективным. Там должен быть лучший путь. Любые идеи?