python 实时保存控制台的输出信息到本地文件

Posted Eureka

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 实时保存控制台的输出信息到本地文件相关的知识,希望对你有一定的参考价值。

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

以上是关于python 实时保存控制台的输出信息到本地文件的主要内容,如果未能解决你的问题,请参考以下文章

openwrt 下python程序后台运行,并将打印信息保存文件

pycharm运行pytest无法实时输出信息

python 让Log既打印在屏幕上,又在文件里保存一份

使用 Python,将 google.cloud.bigquery.job.query.QueryJob 输出保存到本地 JSON 文件

pytest + yaml 框架 -9.logging日志输出和保存

Eclipse将控制台输出信息保存为文件