Дейв Смит дал прекрасный ответ на этот вопрос в своем блоге . По сути, это красиво оборачивает ответ Игнасио:
def suppress_stdout():
with open(os.devnull, "w") as devnull:
old_stdout = sys.stdout
sys.stdout = devnull
try:
yield
finally:
sys.stdout = old_stdout
Теперь вы можете окружить любую функцию, которая искажает нежелательный шум, в stdout следующим образом:
print "You can see this"
with suppress_stdout():
print "You cannot see this"
print "And you can see this again"
Для Python 3 вы можете использовать:
from contextlib import contextmanager
import os
import sys
@contextmanager
def suppress_stdout():
with open(os.devnull, "w") as devnull:
old_stdout = sys.stdout
sys.stdout = devnull
try:
yield
finally:
sys.stdout = old_stdout