2012-10-28 18 views
3

我有一個腳本可以用子流程啓動幾個進程。現在我想寫一個日誌文件,它包含我自己的輸出和子進程的輸出。在子流程之前寫出

log = open(LOG,'w') 
for tasks in tasklist: 
    log.write('log text') 
    ... some code and log text ... 
    sp = subprocess('task[0]',stdout=log) 
    sp.wait() 
    log.write('log text') 
    sp = subprocess('task[1]',stdout=log) 
    sp.wait() 
    log.write('log text') 
    sp = subprocess('task[2]',stdout=log) 
    sp.wait() 
    log.write('log text') 

現在它將subprocess的輸出寫入頂部,然後寫入所有內容。那麼在我啓動子進程之前,每次關閉並重新打開文件是否還有更好的方法?

回答

2

您需要刷新每個編寫的Python緩衝區:

log.write('log text') 
log.flush() 

的子流程做緩衝的寫入,所以他們的數據在Python寫了什麼之前,日誌文件結束。 Python的寫入最終會進入緩衝區,直到該緩衝區已滿時纔會被刷新。

+0

噢,謝謝。沒有在文檔中找到它。 –