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

Python日志無延遲實時寫入的示例

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

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

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

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

測試:

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()

報錯1:TypeError: can't concat str to bytes

報錯2:write需要str對象,無法寫入bytes對象(大意)

這是因為:

(1)log.write需要寫入bytes對象,這里沒問題。但是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")

運行成功!

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

相關文章

  • 詳解Django框架中的視圖級緩存

    詳解Django框架中的視圖級緩存

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

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

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

    python新一代網(wǎng)絡請求庫之python-httpx庫操作指南

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

    Python?OpenGL基本配置方式

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

    解決pycharm回車之后不能換行或不能縮進的問題

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

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

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

    python pandas 組內(nèi)排序、單組排序、標號的實例

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

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

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

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

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

    python中wx將圖標顯示在右下角的腳本代碼

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

最新評論