今回は Python で標準出力を一時的に無効化したい(=出力を捨てたい)ときの方法についてです。
早速結論ですが、まさにそのために用意されている os.devnull
を利用すれば OK です。
Python 公式ドキュメントによると、 os.devnull
は POSIX 準拠の OS では /dev/null
を、 Windows では nul
を指すとのことです。
この os.devnull
と contextlib.redirect_stdout
を組み合わせれば、対象の関数やメソッドの中身に手を加えることなく、一時的に出力を無効化することができます:
import os
from contextlib import redirect_stdout
def func_with_stdout():
print('通常だとこれは標準出力に出力されます。')
# `通常だとこれは標準出力に出力されます。` が出力されない
with redirect_stdout(open(os.devnull, 'w')):
func_with_stdout()
定形のイディオムとして覚えておくと便利です。