欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python日志無(wú)延遲實(shí)時(shí)寫入的示例

 更新時(shí)間:2019年07月11日 16:13:15   作者:CS青雀  
今天小編就為大家分享一篇Python日志無(wú)延遲實(shí)時(shí)寫入的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

我在用python生成日志時(shí),發(fā)現(xiàn)無(wú)論怎么flush(),文件內(nèi)容總是不能實(shí)時(shí)寫入,導(dǎo)致程序意外中斷時(shí)一無(wú)所獲。

以下是查到的解決方案(親測(cè)可行):

open 函數(shù)中有一個(gè)bufferin的參數(shù),默認(rèn)是-1,如果設(shè)置為0是,就是無(wú)緩沖模式。 
但是用二進(jìn)制模式打開這個(gè)文件,并且把要寫入的信息轉(zhuǎn)換byte -like如下。
 
with open("test.txt",'wb',buffering=0) as f:
#wb是寫模式加二進(jìn)制模式
  f.write(b"hello!")在字符串前加b,轉(zhuǎn)換成二進(jìn)制
 
如果沒用二進(jìn)制打開文件會(huì)提示ValueEorror:
 
沒把字符串轉(zhuǎn)成二進(jìn)制會(huì)提示:TypeError: a bytes-like object is required, not ‘str'

測(cè)試:

class Logger(object):
  def __init__(self, log_path="default.log"):
    self.terminal = sys.stdout
    # self.log = open(log_path, "w+")
    self.log = open(log_path, "wb", buffering=0)
 
  def print(self, message):
    self.terminal.write(message + "\n")
    self.log.write(message.encode('utf-8') + b"\n")
 
  def flush(self):
    self.terminal.flush()
    self.log.flush()
 
  def close(self):
    self.log.close()

報(bào)錯(cuò)1:TypeError: can't concat str to bytes

報(bào)錯(cuò)2:write需要str對(duì)象,無(wú)法寫入bytes對(duì)象(大意)

這是因?yàn)椋?/strong>

(1)log.write需要寫入bytes對(duì)象,這里沒問(wèn)題。但是encode返回的是bytes型的數(shù)據(jù),不可以和str相加,需要將‘\n'前加b。

(2)terminal.write函數(shù)參數(shù)需要為str類型,轉(zhuǎn)化為str。

改為:

  def print(self, message):
    self.terminal.write(message + "\n")
    self.log.write(message.encode('utf-8') + b"\n")

運(yùn)行成功!

以上這篇Python日志無(wú)延遲實(shí)時(shí)寫入的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Django框架中的視圖級(jí)緩存

    詳解Django框架中的視圖級(jí)緩存

    這篇文章主要介紹了詳解Django框架中的視圖級(jí)緩存,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Python Pygame實(shí)戰(zhàn)之打地鼠小游戲

    Python Pygame實(shí)戰(zhàn)之打地鼠小游戲

    Pygame庫(kù)是專門為了幫助做出的游戲和其他多媒體應(yīng)用Python編程語(yǔ)言的一個(gè)開放源代碼模塊。本文將利用Pygame模塊制作一個(gè)打地鼠的小游戲,快跟隨小編一起學(xué)習(xí)一下吧
    2022-01-01
  • python新一代網(wǎng)絡(luò)請(qǐng)求庫(kù)之python-httpx庫(kù)操作指南

    python新一代網(wǎng)絡(luò)請(qǐng)求庫(kù)之python-httpx庫(kù)操作指南

    Python 的 httpx 包是一個(gè)用于 HTTP 交互的一個(gè)優(yōu)秀且靈活的模塊,下面這篇文章主要給大家介紹了關(guān)于python新一代網(wǎng)絡(luò)請(qǐng)求庫(kù)之python-httpx庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python?OpenGL基本配置方式

    Python?OpenGL基本配置方式

    這篇文章主要介紹了Python?OpenGL基本配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 解決pycharm回車之后不能換行或不能縮進(jìn)的問(wèn)題

    解決pycharm回車之后不能換行或不能縮進(jìn)的問(wèn)題

    今天小編就為大家分享一篇解決pycharm回車之后不能換行或不能縮進(jìn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • python數(shù)字圖像處理之高級(jí)濾波代碼詳解

    python數(shù)字圖像處理之高級(jí)濾波代碼詳解

    這篇文章主要介紹了python數(shù)字圖像處理之高級(jí)濾波代碼詳解,介紹了許多對(duì)圖像處理的濾波方法,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • python pandas 組內(nèi)排序、單組排序、標(biāo)號(hào)的實(shí)例

    python pandas 組內(nèi)排序、單組排序、標(biāo)號(hào)的實(shí)例

    下面小編就為大家分享一篇python pandas 組內(nèi)排序、單組排序、標(biāo)號(hào)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python函數(shù)參數(shù)和注解的使用

    Python函數(shù)參數(shù)和注解的使用

    本文介紹了Python函數(shù)的四種參數(shù):定位參數(shù)、可變參數(shù)、默認(rèn)值參數(shù)、關(guān)鍵字參數(shù),和第五種Python3新特性參數(shù):僅限關(guān)鍵字參數(shù)。函數(shù)注解是一種元數(shù)據(jù),存在__annotations__屬性中,備注函數(shù)的參數(shù)和返回值的類型,它只是個(gè)注解,Python不會(huì)做任何強(qiáng)制檢查。
    2021-06-06
  • Python網(wǎng)絡(luò)編程 Python套接字編程

    Python網(wǎng)絡(luò)編程 Python套接字編程

    這篇文章主要為大家詳細(xì)介紹了Python網(wǎng)絡(luò)編程的相關(guān)資料,Python套接字編程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • python中wx將圖標(biāo)顯示在右下角的腳本代碼

    python中wx將圖標(biāo)顯示在右下角的腳本代碼

    python中wx將圖標(biāo)顯示在右下腳的代碼,此程序摘自wxdemo,不夠完善,只供參考用
    2013-03-03

最新評(píng)論