在Python中阅读大文件的懒惰方法?

问题:

我有一个非常大的文件4GB,当我尝试阅读我的电脑挂起。
所以我想逐个阅读它,并且处理后每一个将处理的片段存储到另一个文件中并阅读下一个片段。
有没有办法yield这些作品?
我希望有一个懒惰的方法

回答:

要写一个懒惰函数,只需使用yield

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)

另一个选择是使用iter和辅助函数:

f = open('really_big_file.dat')
def read1k():
    return f.read(1024)

for piece in iter(read1k, ''):
    process_data(piece)

如果文件是基于行的,则文件对象已经是一个惰性的行生成器:

for line in open('really_big_file.dat'):
    process_data(line)

 
 Code问答: codewenda.com
Stackoverflow:Lazy Method for Reading Big File in Python?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

50 − = 47