假設我在磁盤中有一個大小爲5GB的數據文件,並且我想在文件末尾附加另一組大小爲100MB的數據 - 只需簡單地追加,我不想修改或移動文件中的原始數據。我知道我可以將漏洞文件作爲長長的列表讀入內存,並將我的小數據添加到內存中,但速度太慢。我如何更有效地做到這一點? 我的意思是,沒有將孔文件讀入內存?在Python中修改和寫入大文件
我有一個生成大量的數據流的劇本,說5GB,作爲一個很長很長列表,我需要將這些數據保存到文件中。我試圖先生成列表,然後將它們輸出一次,但隨着列表的增加,計算機變得非常嚴重。所以我決定多次輸出它們:每次我有一個100MB的列表,然後輸出它們並清除列表。 (這就是爲什麼我第一個問題) 我不知道該怎麼辦this.Is有任何lib或功能,能做到這一點?
回答
讓我們從第二點開始:如果您在內存中存儲列表比可用RAM越大,計算機開始使用HD RAM和這一切都嚴重放緩。在您的情況,輸出的最佳方式是填補RAM儘可能地(始終保持足夠的空間讓您的PC上運行的軟件的其餘部分),然後在文件中寫入所有的一次。
在文件中存儲列表的最快方法是使用pickle
,這樣可以存儲比格式化的數據空間少得多的二進制數據(因此即使讀取/寫入過程也快得多)。
當你寫一個文件,你應該保持文件總是開放的,使用類似with open('namefile', 'w') as f
。這樣,您可以節省打開/關閉文件的時間,並且光標始終處於最後。如果你決定這樣做,使用f.flush()
一旦你寫的文件,以避免丟失數據,如果發生了什麼事情。無論如何,append
方法都是很好的選擇。
如果你提供一些代碼,它會更容易幫助你...
不要建議使用酸菜速度,這不是適當的工具。如果你想要結構化數據的速度,只需使用二進制io而不是泡菜。 –
這是一個替代方案... –
- 1. 在Python中寫入文件
- 2. Python:讀取文件 - 修改行 - 寫入輸出
- 3. 從python中讀取和寫入文件
- 4. 解析和修改文件與Python
- 5. 在Python中將文本寫入文件
- 6. 修改文本文件的內容並在java中寫入新文件
- 7. 寫入文件在python
- 8. 不寫入文件在python
- 9. 如何用python中的文件句柄修改文件後在文件上寫入?
- 10. Python,html和寫入文本文件
- 11. Python寫入文件
- 12. Python寫入文件
- 13. python寫入文件不寫
- 14. 星火:修改CSV文件,並寫入到其他文件夾
- 15. 在python中更改爲大寫和小寫
- 16. 恢復一個大文件在Python中寫入
- 17. 如何在python中將大型csv文件寫入hdf5?
- 18. 在python中寫入大量文件,最後明顯減速
- 19. 修改Scala中的大文件
- 20. 在C#中讀取和寫入非常大的文本文件
- 21. Python:在csv文件中寫入輸出
- 22. 在python中寫入csv文件
- 23. 在Python中讀取/寫入文件
- 24. AVCaptureMovieFileOutput - 在寫入時修剪文件
- 25. 在java中寫入和讀入文件
- 26. 修改Linux文件,並在Python保存
- 27. 修改Python中的XML文件
- 28. 閱讀日期修改了很多文件,並在Python中寫入單個文件
- 29. Python快速讀取和寫入文件
- 30. Python:讀取和寫入CSV文件
你想附加到現有的文件。有關標準文件模式的摘要,請參見[本答案](http://stackoverflow.com/a/1466036/4014959)。第1部分的 –
,只需在追加模式下打開您的文件。對於第2部分,請向我們展示您的代碼,以便我們幫助您修復它。 –