大家好,我是老王,今天在做数据分析处理的过程中,想加一个日志,这样程序跑的每一步都可以快速定位到。正好在调试程序时候,关键点的信息已经用print()打印出来了,那正好可以把打印的信息直接保存就可以啦。

【方法1】

有的朋友说可以在print()打印后边加上输出的文件名。

比如:

log = open("a.txt",mode="a",encoding="utf-8")
for i in range(100):
    a=b()
    print(a,file = log)
log.close()

但是我个人觉得这样太繁琐了,如果输出的数据比较多,每一行都需要添加文件名称,那工作量太大了。不推荐。

【方法2】

定义一个将print()导出日志的类

如下:

class Logger(object):
    def __init__(self, filename="Default.log"):
        self.terminal = sys.stdout
        self.log = open(filename, "a")
        #可以选择"w"
        self.log = open(filename, "a", encoding="utf-8")  # 防止编码错误
    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)
    def flush(self):
        pass
    def reset(self):
        self.log.close()
        sys.stdout=self.terminal
if __name__ == '__main__': 
    try:
        sys.stdout = Logger('202205.txt') 
        print("输入一串字符保存日志")
            
        
    finally:
        sys.stdout.reset()

【说明】通过多次测试,亲测有效!但是需要注意两个问题:

1.编码问题:一定要设置encoding="utf-8",防止编码错误。

2.结尾关闭文档链接:很多案例没有关闭日志文档,会导致无法删除日志文件,需要关闭开发平台,释放链接才能删除。所以一定要在最后记得关闭日志的链接!

好啦今天就说到这,大家有疑问可以给老王留言哦!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐