今回は Python のコードの中で出力を一時的に無効化したい(捨てたい)ときの方法についてです。
早速結論ですが、まさにそのために用意されている
os.devnull
を利用します。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()
個人的には、自動テストの中でこのようなことをしたくなることがときどきあります。定形のイディオムとして覚えておくと便利です。
0 件のコメント:
コメントを投稿