最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

open 函數中有一個bufferin的參數,默認是-1,如果設置為0是,就是無緩沖模式。 
但是用二進制模式打開這個文件,并且把要寫入的信息轉換byte -like如下。
 
with open("test.txt",'wb',buffering=0) as f:
#wb是寫模式加二進制模式
  f.write(b"hello!")在字符串前加b,轉換成二進制
 
如果沒用二進制打開文件會提示ValueEorror:
 
沒把字符串轉成二進制會提示: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型的數據,不可以和str相加,需要將‘\n'前加b。

(2)terminal.write函數參數需要為str類型,轉化為str。

改為:

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

運行成功!

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

相關文章

  • python next()和iter()函數原理解析

    python next()和iter()函數原理解析

    這篇文章主要介紹了python next()和iter()函數原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 用python 制作圖片轉pdf工具

    用python 制作圖片轉pdf工具

    這篇文章主要介紹了用python 制作圖片轉pdf工具的思路及代碼,非常詳細,有需要的小伙伴參考下
    2015-01-01
  • python os.path.isfile()因參數問題判斷錯誤的解決

    python os.path.isfile()因參數問題判斷錯誤的解決

    今天小編就為大家分享一篇python os.path.isfile()因參數問題判斷錯誤的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 詳解python 發(fā)送郵件實例代碼

    詳解python 發(fā)送郵件實例代碼

    本篇文章主要介紹了python 發(fā)送郵件實例代碼,詳細的介紹了各種方式發(fā)送郵件,包括文件形式的郵件、HTML形式的郵件、帶圖片的HTML郵件等,有興趣的可以了解一下。
    2016-12-12
  • 基于django micro搭建網站實現加水印功能

    基于django micro搭建網站實現加水印功能

    這篇文章主要介紹了基于django micro搭建網站實現加水印功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Python爬取視頻時長場景實踐示例

    Python爬取視頻時長場景實踐示例

    這篇文章主要為大家介紹了Python獲取視頻時長場景實踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • python批量查詢、漢字去重處理CSV文件

    python批量查詢、漢字去重處理CSV文件

    這篇文章主要為大家詳細介紹了python批量查詢、漢字去重處理CSV文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python和OpenCV進行多尺度模板匹配實現

    Python和OpenCV進行多尺度模板匹配實現

    本文將實現如何將標準模板匹配擴展到多尺度,使其可以處理模板和輸入圖像大小不同的匹配。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python產生模擬數據faker庫的使用詳解

    python產生模擬數據faker庫的使用詳解

    這篇文章主要介紹了python產生模擬數據faker庫的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 利用Python制作一個動物識別小程序

    利用Python制作一個動物識別小程序

    動物識別是計算機視覺和模式識別領域的重要研究方向,它涉及通過圖像或視頻數據自動識別和分類不同種類的動物,隨著數字圖像技術和機器學習方法的快速發(fā)展,動物識別在實際應用中具有廣泛的潛力,本文將給大家介紹如何基于Python制作一個動物識別小程序
    2023-10-10

最新評論

色达县| 定结县| 湖州市| 武隆县| 枝江市| 罗平县| 河东区| 兴海县| 焉耆| 什邡市| 遵化市| 澜沧| 马山县| 桦川县| 乌鲁木齐市| 惠州市| 华亭县| 嵊州市| 永修县| 班玛县| 乌拉特前旗| 育儿| 新密市| 霸州市| 潼南县| 佳木斯市| 雷山县| 阿城市| 迭部县| 玛多县| 泰和县| 海阳市| 通江县| 阜城县| 阿克苏市| 页游| 自治县| 江华| 车险| 沅江市| 徐闻县|