0

withステートメントを使用して抑制sys.stdoutまたはsys.stderr個別にしようとしています。うまくいかないチュートリアル を見つけました。私は使用Python 3.6.4していますが、チュートリアルはPython 2.

SOで調べたところ、いくつか見つかりましたが、アプリケーションが機能しないか、この状況には当てはまりませんでした。

これは当てはまりません: Python サブプロセスは stdout と stderr を抑制します

with機能するステートメントを 取得できませんでした: Suppress stdout / stderr print from Python functions

これは fortran 用です: Python での FORTRAN (F2PY 経由で呼び出される) 出力のリダイレクト

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
4

2 に答える 2