簡體   English   中英

在Python中將實時標准輸出記錄到文件?

[英]Logging realtime stdout to a file in Python?

我想將實時標准輸出從其他類記錄到日志文件中。 這是我的演示代碼。 代碼效果很好。 但是它正在等待示例函數完成。 我想並行運行它。 因此,日志文件將在標准輸出的同時寫入。

import sys
import time

class Logger(object):
    def __init__(self):
        self.terminal = sys.stdout
        self.log = open("log.txt", "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)  

class sample:
  def __init__(self):
    print "TEST"
    time.sleep(5)

if __name__ == "__main__":
  a = sample()
  sys.stdout = Logger()

調用file.write不一定立即將內容寫入HD。 它取決於file對象的緩沖策略。 如果要在某個特定時刻強制寫入磁盤,則可以使用flush()方法(另請參見this )。

請注意, sys.stdout刷新策略取決於安裝的配置以及環境變量,因此,如果要保證標准輸出和日志文件之間的“並行”寫入,必須對兩個流都進行flush()

def write(self, message):
    self.terminal.write(message)
    self.log.write(message)  
    self.terminal.flush()
    self.log.flush()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM