当我尝试将大文本文件加载到内存中时,我得到了这个:
Python(24297,0xa0d291a8) malloc: *** mach_vm_map(size=717418496) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
MemoryError
导致它的代码是:
with open('list.txt') as f:
total = sum(1 for _ in f)
是否有一种原生的python方式来处理这个问题?
答案 0 :(得分:1)
您正在二进制文件上运行上述代码,该文件不包含(或极少数)新行。因此,读取一行的尝试读取一行非常长行。
请改为尝试:
with open('list.txt') as f:
total = sum(block.count('\n')
for block in iter(lambda: f.read(64*1024), ''))