2017-08-03 84 views
0

我正在使用此代碼將stdout記錄到控制檯和文件。此代碼的作品,將輸出「測試」我的console.log文件。但是,如果我運行我的整個腳本/程序並將writer.close()移動到程序終止的末尾,則我的其他代碼(可能需要分鐘運行)中發生的所有打印都不會寫入日誌文件?這種方法有沒有時間限制?我可以做什麼,以便我可以運行可能運行20分鐘的腳本/程序並將它們都記錄到控制檯和日誌文件中。下面我的例子再次在快速打印上工作得很好,然後關閉作者。但如果我打印幾行幾分鐘,然後去關閉作家我沒有得到任何錯誤,但仍然console.log文件它是空的?長時間寫入控制檯和日誌文件(Python)

Import sys 

class MyWriter: 

    def __init__(self, stdout, filename): 
     self.stdout = stdout 
     self.logfile = open(filename, 'a') 

    def write(self, text): 
     self.stdout.write(text) 
     self.logfile.write(text) 

    def close(self): 
     self.stdout.close() 
     self.logfile.close() 

    def flush(self): 
     pass 


writer = MyWriter(sys.stdout, os.getcwd() + '\\logs\\console.log') 
sys.stdout = writer 

print("test") 

writer.close() 
sys.exit() 
+0

嘗試'self.stdout.flush()'和'self.logfile.flush()'寫後。 –

+0

那工作:) geez謝謝我從來沒有想到這一點。 –

+0

你可以添加回答,所以我可以打勾 –

回答

1

您需要在寫入數據流後刷新流。你可以做,使用f.flush()write

self.stdout.flush() 
self.logfile.flush() 
相關問題