2019/03/25

Python Tips:出力を一時的に無効化したい

バタバタしていて前回から間が空いてしまいました。

今回は Python のコードの中で出力を一時的に無効化したい(捨てたい)ときの方法についてです。

早速結論ですが、まさにそのために用意されている os.devnull を利用します。

Python の公式ドキュメントによると、 os.devnull は POSIX 準拠の OS では /dev/null を、 Windows では nul を指すとのこと。

この os.devnullcontextlib.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 件のコメント: