介绍
使用Python怎么实现日志无延迟实时写入?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Python的五大特点是什么
Python的五大特点:1。简单易学,开发程序时,专注的是解决问题,而不是搞明白语言本身。2。面向对象,与其他主要的语言如c++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。3。可移植性,Python程序无需修改就可以在各种平台上运行。4。解释性,Python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。5。开源,Python是牙线(自由/开放源码软件)之一。
<强>以下是查到的解决方案(亲测可行):强>
open 函数中有一个百服宁的参数,默认是1,如果设置为0是,就是无缓冲模式只 但是用二进制模式打开这个文件,并且把要写入的信息转换byte ——如下。 , with 开放(“test.txt" & # 39; wb # 39;,缓冲=0),as f: #世行是写模式加二进制模式 f.write才能(b"你好!“)在字符串前加b,转换成二进制 , 如果没用二进制打开文件会提示ValueEorror: , 没把字符串转成二进制会提示:TypeError:, a bytes-like object is ,, not ,“str # 39;
<强>测试:强>
class 记录器(对象): def 才能;__init__(自我,,log_path=癲efault.log"): ,,,self.terminal =sys.stdout ,,,#,self.log =,开放(log_path,,“w +“) ,,,self.log =,开放(log_path,“wb",,缓冲=0) , def 才能打印(自我,,消息): ,,,self.terminal.write(时间+ message “\ n") ,,,self.log.write (message.encode (& # 39; utf - 8 # 39;), +, b" \ n") , def 才能冲洗(自我): ,,,self.terminal.flush () ,,,self.log.flush () , def 才能关闭(自我): ,,,self.log.close ()
<强>报错1:强> TypeError:停下来# 39;t concat str字节
<强>报错2:强>写需要str对象,无法写入字节对象(大意)
<强>这是因为:强>
(1) log.write需要写入字节对象,这里没问题。但是编码返回的是字节型的数据,不可以和str相加,需要将“\ n # 39;前加b。
(2)终端。写函数参数需要为str类型,转化为str。
改为:
,, def 打印(自我,,消息): ,,,self.terminal.write(时间+ message “\ n") ,,,self.log.write (message.encode (& # 39; utf - 8 # 39;), +, b" \ n")
关于使用Python怎么实现日志无延迟实时写入问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。