python的print输出在控制台并且将输出内容保存为文件 |
您所在的位置:网站首页 › Cmd打印的信息怎么保存在本地 › 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里的东西偷偷换成我们写的: sys.stdout = log接下来为所欲为的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了吧… |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |