我有一个包含25000行的15GB文本文件。我正在用Python创建一个多级字典,形式如下: dict1 = {'':int}, dict2 = {'':d ict1}.
我必须在我的程序中多次使用整个dict2(大约1000...在for循环中)。谁能说出一个好方法。
相同类型的信息存储在文件中(25000张图像的不同RGB值的计数,每行1张图像)例如:文件的 1 行如下所示:图片 1 : 255,255,255-70 ;234,221,231-40 ;112,13,19-28 ;图片 2 : 5,25,25-30 ;34,15,61-20 ;102,103,109-228 ;等等。
最好的方法是使用分块。
def read_in_chunks(file_object, chunk_size=1024):
"""Lazy function (generator) to read a file piece by piece.
Default chunk size: 1k."""
while True:
data = file_object.read(chunk_size)
if not data:
break
yield data
f = open('really_big_file.dat')
for piece in read_in_chunks(f):
process_data(piece)
请注意,当您开始处理移动到map-reduce习惯用法的大文件时可能会有所帮助,因为您将能够独立处理单独的分块文件,而无需将完整的数据集拉入内存。
在python中,如果使用文件对象作为迭代器,则可以逐行读取文件,而无需在内存中打开整个内容。
for line in open("huge_file.txt"):
do_something_with(line)