文本文件過大時, 使用python一行一行讀取

首先創建一個大於內存的文本文件, 這裏創建的寫了20億個單詞的文件是13G, 我的電腦內存是8G

import random
from datetime import datetime

start = datetime.now()
f = open("E:/big.txt", 'w', encoding="utf-8")
words = ["hello", "spark", "hadoop", "world", "hive", "flink"]
num = 0
while True:
    index = random.randint(0, 5)
    line_10 = [words[index] + '\n'] * 100
    f.write("".join(line_10))
    num += 1
    if num == 2e+7:
        break
        
f.close()
end = datetime.now()
print("時間消耗:", (end - start))

爲了節省時間一次寫相同的內容寫十行, 總共耗時

下面是讀取並統計所有的單詞

start = datetime.now()
f = open("E:/big.txt", 'r', encoding="utf-8")
mydict = {}
line = f.readline()
while line:
    mydict[line] = mydict.get(line, 0) + 1
    line = f.readline()
f.close()

print(mydict)
wordSum = 0
for key, value in mydict.items():
    wordSum += value

print("單詞總數:", wordSum)
end = datetime.now()
print("時間消耗:", (end - start))

總共耗時大約一個小時的時間, 我不知道有沒有其他的更高效的讀取文本文件的方法, 如果有請朋友們告訴一聲

如果直接讀取全部的內容則會直接報內存溢出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章