这是一个可以同时将print内容输出到屏幕以及保存到日志文件的简单代码。

主要利用了 builtins 对 print 方法进行 hook,从而让方法全局有效。

"""global print function"""

import builtins

_print = print
def set_print():

    def print_to_file(*args, **kwargs):
        _print(*args, **kwargs)
        with open('print_ouptut.txt', 'w') as f:
            f.write(*args, **kwargs)

    builtins.print = print_to_file

def reset_print():
    builtins.print = _print


def test_print():
    print('hello world')


if __name__ == '__main__':
    test_print()

实际上,借助这个思路,还能禁用全局的 print。例如在 print 中直接添加 exception。