如何用python读取一个500G的文本
作者:
___大鱼___ | 来源:发表于
2019-05-27 17:14 被阅读0次遇到超大文件,不能直接放在内存中,要分段进行读取 以减少内存的占用
# coding: utf-8
# 500G, 特殊, 内容都在一行 以{|}为分隔符隔开 如果一次性读取内存会崩掉 那我们应该怎么解决呢?
def myreadlines(f, newline):
# 声明一个缓存, 存放我们已经读取的数量
buf = ''
while True:
# 查询缓存中的数据是否存在分隔符 40960字符可能有多个分隔符
while newline in buf:
# 如果存在查找分隔符的位置
pos = buf.index(newline)
# yield 从0开始到字符串的位置
yield buf[:pos]
# 重新将buf 赋值为 查找到的字符加上分隔字符的长度 切片至结尾
buf = buf[pos + len(newline):]
# 如果不在读取40960的字符
chuck = f.read(4096*10)
# 如果没有数据文件结尾则跳出循环
if not chuck:
# 读不到的时候 将结尾的buf存放到yield
yield buf
break
# 如果有则添加进入缓存里面
buf += chuck
with open('input.txt') as f:
for line in myreadlines(f, '{|}'):
# 第一个参数为文件 第二个参数为分隔符
print line
本文标题:如何用python读取一个500G的文本
本文链接:https://www.haomeiwen.com/subject/zdtktctx.html
网友评论