Python中读取大文件的简单方法?
发布于 2021-02-02 23:23:37
我有一个很大的文件4GB,当我尝试读取它时,我的计算机挂起了。因此,我想逐个读取它,并且在处理完每个块之后,将已处理的块存储到另一个文件中并读取下一个块。
yield
这些零件有什么方法吗?
我很想有一个简单的方法。
关注者
0
被浏览
145
1 个回答
-
要编写一个简单函数,只需使用
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)