2016-01-20 34 views
0

我正在開發一個python程序,它需要將一些「時間步長 - 數量」形式的數據寫入文件。數據的大小在運行時確定。將可變大小的數組寫入文件

f = open('data.txt', 'w') 

while not condition: 
    time_step += 1 
    q = compute_q() 
    f.write('{0:d} {1:.3e}'.format(time_step, q)) 

我的問題::現在我這樣(示意圖)做到這一點是確定做這種方式?或者我應該以某種方式緩衝數據,並將緩衝區轉儲到文件?如果我切換到二進制格式,例如hdf5,我該怎麼辦?謝謝。

+0

你看過'pickle/cPickle',它們傾向於覆蓋大多數寫入問題,但是取決於數據類型。 – ncfirth

+1

將此作爲僞代碼:爲什麼它不應該好?您似乎對性能感到擔憂,但是如果數據量巨大和/或程序運行頻率很高,那麼應該只會打擾您。緩衝通常不是必需的 - 操作系統很可能會充分照顧它。最後:從文本文件格式切換到二進制文件格式也應該只在真正需要的情況下完成。 –

+1

您的示例很好 - 文件I/O使用標準文件對象自動緩衝。 – Norman

回答

0

這取決於您的需求。如果你關心吞吐量,你應該緩衝你的寫入。使用open()的參數buffering

+0

謝謝!不知道這個參數。 –