python快速讀取非常大的檔案
阿新 • • 發佈:2019-02-10
讀取大檔案是我們平時經常會遇到的問題,我這裡給出兩個比較好的解決方案。第一種
with open("test.txt") as f:
for line in f:
#do something with data
這種做法非常的簡單。這個程式碼在開啟檔案的過程中,不會一次性讀取全部檔案,而是採用每次讀取一行的方式,類似於buffer
機制。
當然我們也可以自己去實現一個buffer
,然後通過協程的方式操作
def readInChunks(fileObj, chunkSize=4096):
"""
Lazy function to read a file piece by piece.
Default chunk size: 4kB.
"""
while 1:
data = fileObj.read(chunkSize)
if not data:
break
yield data
f = open('bigFile')
for chuck in readInChunks(f):
#do_something(chunk)
f.close()
這段程式碼中我們通過每次讀取4k
大小的資料,將所有檔案讀取完。
我對於一個3GB
大小的資料進行了讀取測試,分別用時如下:
28.54150631145376 s
28.522545760074877 s
兩者所用時間差不多。