python使用生成器的原理遍历大文件

# 需求遍历大小为500G的文件

# 文件特殊之处只有一行,一行就有500G,每条数据使用分隔符“{|}”隔开

def readline(f, separator):
    """
    读取数据的方法
    :param separator: 分隔符
    :return: None
    """
    bar = ""
    while True:
        while separator in bar:
            pos_index = bar.index(separator)
            result = bar[:pos_index]
            yield result
            bar = bar[pos_index+3:]

        # 假设一次读取4096个
        chunk = f.read(4096)
        if chunk:
            bar += chunk
        else:
            yield bar
            break


if __name__ == "__main__":
    with open("input.txt") as f:
        for line in readline(f, "{|}"):
            print(line)
这里我准备了一个文件input.text,文件内容如下

输出如下:


posted @ 2020-03-13 18:48  _WittChen  阅读(478)  评论(0)    收藏  举报