https://stackoverflow.com/questions/8391411/suppress-calls-to-print-python#
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, os
# Disable
def blockPrint():
sys.stdout = open(os.devnull, 'w')
# Restore
def enablePrint():
sys.stdout = sys.__stdout__
print ('This will print')
blockPrint()
print ("This won't")
enablePrint()
print ("This will too")
open(os.devnull, 'w')のos.devnullは、nullであるデバイス、という意味で、何もない所に出力する(=出力しない)、という設定です。https://docs.python.org/3/library/os.html#os.devnull
その後、sys.__stdout__でデフォルト出力に戻しています。
Jupyterのときはデフォルトがipykernel.iostream.OutStreamとなっており、これに戻す方法が不明です。
なので、
save_stdout = sys.__stdout__
# Disable stdout
# ....
# return to default
sys.stdout = save_stdout
とやって戻しています。ちなみに、logging機能でコンソールに出力にしておけば、loglevelの設定を変えて表示するしないを調節することができます。
0 件のコメント:
コメントを投稿