Python中读取大文件的简单方法?

发布于 2021-02-02 23:23:37

我有一个很大的文件4GB,当我尝试读取它时,我的计算机挂起了。因此,我想逐个读取它,并且在处理完每个块之后,将已处理的块存储到另一个文件中并读取下一个块。

yield这些零件有什么方法吗?

我很想有一个简单的方法。

关注者
0
被浏览
145
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    要编写一个简单函数,只需使用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
    
    
    with open('really_big_file.dat') as f:
        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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看