项目中需要程序长时间运行,然后再根据输出信息去排查错误,由于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/...


Solryu
18 声望5 粉丝