下面是我編寫的一個腳本的一部分,它將列表中的每個項目傳遞給一個函數,將該函數的輸出存儲爲帶有換行符的變量結束,然後將變量寫入文件中的新行。它還將變量輸出到控制檯。在python中的for循環中寫入文件
for i in lane_list:
out = count_genes(count, i, reader, total_genes) + '\n'
count += 1
outfile.write(out)
print out
該腳本的作品,但不是我期望的方式。當腳本運行時,我可以看到輸出打印到控制檯,所以我知道腳本通過for循環運行的速度,並且我認爲python會以與輸出到控制檯相同的速率寫入文件。奇怪的是,很長一段時間沒有任何東西會寫入文件(我可以通過在控制檯中'將文件'作爲腳本的運行''來看到這一點),然後再一次在文件中出現幾百行。就好像python正在存儲要寫入文件一段時間的內容,然後一次性寫入所有內容。更令人驚訝的是,當我捕捉文件時,有時候運行它的腳本將寫入最後一行的一半,但不是全部。
任何人都可以向我解釋爲什麼這是?
閱讀關於flushing:http://stackoverflow.com/questions/3167494/how-often-does-python-flush-to-a-file。另外使用'tail -f filename'來獲得文件的實時預覽可能會有幫助(如果你正在使用linux)。 – szymon