以前一直没有关注过python读取大文件的问题,因为一直都是顺顺畅畅地读取了文件。直到今天有人问我python怎么读取文件出现了内存不足的错误?我才发现原来大文件(GB级别)的读取和普通文件的读取是不一样的。
下面介绍三种我亲测可用的方法。这里的文件类型可以是txt,dat等类型的文件。
- 用read(size)方法
- 用iter和yield分段分段地读
- 用with open()
方法一read(size)
try:
f = open('/path/to/file', 'r')
print f.read(size) #size表示一次读取的最大字节数
finally:
if f:
f.close()
调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(si