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程序后台运行,并将打印信息保存文件
使用 Python,将 google.cloud.bigquery.job.query.QueryJob 输出保存到本地 JSON 文件