我注意到,在Python中寫入文件時,一旦關閉文件,內容就會寫入文件。爲什麼僅在關閉文件後才寫入文件的內容?
例如:
with open('test.txt','w') as ffile:
ffile.write("testing")
time.sleep(20)
在這個例子中 「測試」 將等待20秒後寫入。
這是怎麼發生的?爲什麼不直接寫入文件?
我注意到,在Python中寫入文件時,一旦關閉文件,內容就會寫入文件。爲什麼僅在關閉文件後才寫入文件的內容?
例如:
with open('test.txt','w') as ffile:
ffile.write("testing")
time.sleep(20)
在這個例子中 「測試」 將等待20秒後寫入。
這是怎麼發生的?爲什麼不直接寫入文件?
您正在看到緩衝效果。磁盤I/O使用緩衝區來提高性能,並且沒有將足夠的數據寫入緩衝區以便刷新。
寫入更多數據或關閉文件都導致刷新緩衝區。可替代地,將緩衝區大小設置到一個非常小的數(字節的緩衝器將持有數):
with open('test.txt', 'w', 2) as ffile:
選項0
和1
具有特殊含義; 0
將完全禁用緩衝(僅適用於二進制模式文件),並且1
是文本文件的默認值(使用行緩衝,寫入一個換行符以便刷新)。
這也意味着,如果你有一個文本文件,你可以寫一個換行符觸發刷新:
ffile.flush()
:
ffile.write('\n')
最後但並非最不重要的,你可以明確地使用file.flush()
method刷新
請修復您的縮進。這個問題毫無意義。緩衝輸出做到這一點。 –
簡而言之,緩衝:寫入文件很昂貴(需要很多時間),因此寫作被推遲,希望更多內容能夠到達。 –
對不起,我修正了它。 – Ria