这是一个可以同时将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。