在python中 比如读取一个500G文件大小,如果使用readLines()方法和read()方法都是不可取的这样的话,直接会导致内存溢出,比较好的方法是使用read(limitSize)或 readLine(limitSize)方法读取数据,每次读取指定字节的数据,放置内存中,在配合
# coding=gbk #readLine def readContent(fileObj, lineSign): buf = "" while True: lines = buf.split(";") for line in lines: # 每获得一个数据就进行返回,直到所有数据遍历完为止 yield line # 每一行读取400字节的数据,下次会在下一行读取400字节的数据 # 每次读取400字节在内存中,并处理之后返回 chunk = fileObj.readline(400) if not chunk: buf = "" yield buf break buf = chunk #read def readContent2(fileObj, lineSign): buf = "" while True: while lineSign in buf: pos = buf.index(lineSign) yield buf[:pos] buf = buf[pos + len(lineSign):] # 每一行读取400字节的数据,下次会在下一行读取400字节的数据 # 每次读取400字节在内存中,并处理之后返回 chunk = fileObj.read(100) if not chunk: buf = "" yield buf break buf += chunk if __name__ == "__main__": with open("text.txt") as f: for line in readContent2(f, ";"): print(line + "----------")