读取大文件方法
poc 过程,遇到银行金融类企业,有时会遇到一种情况,即银行机器配置比较低,另外需要读取的数据量非常大,此时偶尔会发生内存不足的情况,此种情况,解决办法如下:
# 500G, 特殊 一行
def myreadlines(f, newline):
# 声明buf,类似缓存作用
buf = ""
while True:
while newline in buf:
pos = buf.index(newline)
yield buf[:pos]
buf = buf[pos + len(newline):]
# read方法在输入4096后,不会一次性读取全部文件,而是只读取4096个字符
chunk = f.read(4096)
if not chunk:
# 说明已经读到了文件结尾
yield buf
break
buf += chunk
with open("input.txt") as f:
for line in myreadlines(f, "{|}"):
print(line)
通过生成器建立循环,相当于将大块数据拆解成一块一块的小部分进行读取和处理。
👍
这个必须点赞👍