方法一:
#把这三行代码放在程序前
import sys
f_handler=open('out.log', 'w')
sys.stdout=f_handler
但是在缺点是:
1.log不可叠加:每一次执行,都会抹掉文件out.log中之前的数据。
2.看不到执行过程中的log:out.log只有执行完才会显示,也就是执行中终端打印的信息完全看不到了。
2.不知道执行进度:终端没有了显示,不了解具体执行到哪里了:若算法执行很长,例如神经网络执行100个epoch的时候,终端一直没有任何显示内容,会让用户不知道执行到第几个epoch了。
方法二:(觉得更好)
最终会存储在terminal_log.txt文件中。txt保存的文位置是终端所在的当前目录。
import sys
import os
class Logger(object):
def __init__(self, filename="Default.log"):
self.terminal = sys.stdout
self.log = open(filename, "a")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
def flush(self):
pass
type = sys.getfilesystemencoding()
#sys.stdout = Logger('/media/lin