Я пытаюсь использовать оператор with
для подавления sys.stdout
или sys.stderr
по отдельности. Я нашел tutorial, который не работал. Я использую Python 3.6.4
и думаю, что туториал — это какая-то версия Python 2
.
Я просмотрел его на SO и нашел несколько, но с приложениями, которые не работали или не применялись к этой ситуации.
Это неприменимо: подпроцесс Python подавляет стандартный вывод и стандартный вывод
Не удалось заставить работать ни один из операторов with
: Подавить печать stdout/stderr из Функции Python
Это для фортрана: Перенаправление FORTRAN (вызывается через F2PY) вывод на Python
from contextlib import contextmanager
@contextmanager
def suppress_console(file=sys.stdout):
with open(os.devnull, "w") as devnull:
old_file = file
file = devnull
try:
yield
finally:
file = old_file
with suppress_console():
print(1, file=sys.stdout)
# 1
contextlib
уже включает в себяredirect_stdout
иredirect_stderr
диспетчеры контекста, верно? Просто перенаправьте наos.devnull
- person juanpa.arrivillaga   schedule 05.06.2018old_file
. Вам нужно изменить атрибутыsys
. - person juanpa.arrivillaga   schedule 05.06.2018