我有一个包含25000行的15GB文本文件。 我在Python的表单中创建一个多级字典: dict1 = {'':int}, dict2 = {'':dict1}。
我必须在我的程序中多次使用整个dict2(在for循环中大约1000 ...)。 任何人都可以告诉一个好方法来做到这一点。
相同类型的信息存储在文件中 (25000个图像的不同RGB值的计数。每行1个图像) 例如:文件的1行将是: image1:255,255,255-70; 234,221,231-40; 112,13,19-28; image2:5,25,25-30; 34,15,61-20; 102,103,109-228; 等等。
答案 0 :(得分:2)
执行此操作的最佳方法是使用分块。
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习惯用法可能会有所帮助,因为你可以独立处理单独的分块文件,而无需将完整的数据集拉入内存。
答案 1 :(得分:1)
在python中,如果使用文件对象作为迭代器,则可以逐行读取文件,而无需在内存中打开整个文件。
for line in open("huge_file.txt"):
do_something_with(line)