项目中需要程序长时间运行,然后再根据输出信息去排查错误,由于IDE的控制台和cmd窗口都只能保存当前的一小部分输出信息,很往前的是看不到的,不利于debug。于是就很需要将输出信息都保存到本地,方便回溯错误。在此记录一下实现的方法。
一、重定向标准输出流(适合保存指定的print)
f = open('a.txt', 'w')
print('python is good', file=f, flush=True) # 如果不加flush参数,则只能到程序结束或者f.close时才能把信息写入到文件中
二、重定向标准输出流(适合保存所有的print)
import sys
f = open('a.log', 'a') # a.log 或者a.txt都可以
sys.stdout = f # 保存print输出
sys.stderr = f # 保存异常或错误信息
...
f.flush()# 同上,保证运行到这里时能将之前的语句保存到文件中,否则只能到程序结束或者f.close时才开始写文件动作
三、自定义Logger
class Logger(object):
def __init__(self,fileN ="Default.log"):
self.terminal = sys.stdout
self.log = open(fileN,"a")
def write(self,message):
self.terminal.write(message)
self.log.write(message)
def flush(self):
pass
import sys
sys.stdout = Logger("./1.txt") # 修改参数来确定是覆盖写还是追加写
#下面所有的方法,只要控制台输出,都将写入"D:\\1.txt"
for i in range(10):
print('来了')
https://www.jb51.net/article/...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。