首先创建一个大于内存的文本文件, 这里创建的写了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))

为了节省时间一次写相同的内容写十行, 总共耗时

文本文件过大时, 使用python一行一行读取_3g

文本文件过大时, 使用python一行一行读取_python_02

下面是读取并统计所有的单词

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))

文本文件过大时, 使用python一行一行读取_内存溢出_03

总共耗时大约一个小时的时间, 我不知道有没有其他的更高效的读取文本文件的方法, 如果有请朋友们告诉一声

如果直接读取全部的内容则会直接报内存溢出

文本文件过大时, 使用python一行一行读取_python_04