使用Python 2.7 讀取大型CSV 檔案
應對使用Python 2.7 讀取巨大CSV 檔案的挑戰尤其可能會造成記憶體問題,尤其可能會造成記憶體問題,特別是檔案超過300,000 行。為了克服這個障礙,避免將整個文件讀入記憶體至關重要。
記憶體管理技術
使用生成器可以實現記憶體高效的處理。不要累積列表中的所有行,而是單獨產生每一行。這種方法(以 getstuff 函數的生成器為例)可大幅減少記憶體消耗。
此外,請考慮 itertools 模組中的 dropwhile 和 takewhile 函數等最佳化。這些透過跳過不相關的行來促進高效過濾,進一步節省記憶體。
效能最佳化
除了記憶體管理之外,提高效能還包括盡量減少不必要的操作。 getdata 函數應該直接迭代 getstuff 產生器,消除不必要的中間列表。
範例用法
使用生成器重新編寫程式碼會產生更有效的解決方案:
def getstuff(filename, criterion): ... # Same generator code as above def getdata(filename, criteria): ... # Same generator code as above # Process rows directly for row in getdata(somefilename, sequence_of_criteria): ... # Process the current row
此程式碼一次有效地處理一行,大幅減少記憶體使用並提高效能,即使對於巨大的CSV 檔案也是如此。
以上是如何在Python 2.7中高效讀取大型CSV檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!