使用Python怎么实现日志无延迟实时写入

  介绍

使用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怎么实现日志无延迟实时写入问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

使用Python怎么实现日志无延迟实时写入