python的print输出在控制台并且将输出内容保存为文件(最新推荐)
前言
深度学习log日志还是蛮重要的,print出来还不够,还得保存一下,目前找到的最方便的就如下所示了。
实现思路
我感觉就是类似于重写一下调用print的时候执行的方法,让他既能够在控制台输出,也能保存到文件里去
实现方法
定义一个Logger类
import sys # 需要引入的包 # 以下为包装好的 Logger 类的定义 class Logger(object): def __init__(self, filename="Default.log"): self.terminal = sys.stdout self.log = open(filename, "w", encoding="utf-8") # 防止编码错误 def write(self, message): self.terminal.write(message) self.log.write(message) def flush(self): pass
计算时间戳,用于当我们的文件名,这样就不容易重名,方便数据的保存
import time t = time.strftime("-%Y%m%d-%H%M%S", time.localtime()) # 时间戳 filename = 'log' + t + '.txt'
紧接着需要实例化对象:
log = Logger(filename)
然后将sys里的东西偷偷换成我们写的:
print("hi icy hunter")
接下来为所欲为的print就行了
print("hi icy hunter")
完整代码:
import sys # 需要引入的包 # 以下为包装好的 Logger 类的定义 class Logger(object): def __init__(self, filename="Default.log"): self.terminal = sys.stdout self.log = open(filename, "w", encoding="utf-8") # 防止编码错误 def write(self, message): self.terminal.write(message) self.log.write(message) def flush(self): pass import time t = time.strftime("-%Y%m%d-%H%M%S", time.localtime()) # 时间戳 filename = 'log' + t + '.txt' log = Logger(filename) sys.stdout = log print("hi icy hunter")
放到.py里运行一下:
控制台输出:
生成了这么个文件
点开看看:
嗯,是我想要的结果了。
ps:发现在ipynb里运行好像文件为空,可能是线程没结束,还没来得及写吧,不太清楚,不过要是用ipynb应该就不愁保存print了吧…
到此这篇关于python的print输出在控制台并且将输出内容保存为文件的文章就介绍到这了,更多相关python在控制台输出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python3的UnicodeDecodeError解决方法
这篇文章主要介绍了python3的UnicodeDecodeError解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-12-12python解决Missing 1 required positional ar
这篇文章主要介绍了python解决Missing 1 required positional argument报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12Python机器学习pytorch模型选择及欠拟合和过拟合详解
如何发现可以泛化的模式是机器学习的根本问题,将模型在训练数据上过拟合得比潜在分布中更接近的现象称为过拟合,用于对抗过拟合的技术称为正则化2021-10-10Python的地形三维可视化Matplotlib和gdal使用实例
这篇文章主要介绍了Python的地形三维可视化Matplotlib和gdal使用实例,具有一定借鉴价值,需要的朋友可以了解下。2017-12-12
最新评论