9.6 生成器如何读取大文件

场景:500G 文件 特殊只有一行,特殊分割符号 {|}

def my_readline(f, newline):
    buf = ''
    while True:
        while newline in buf:
            pos = buf.index(newline)
            yield buf[:pos]
            buf = buf[pos + len(newline):]
        chunk = f.read(4096 * 10)
        if not chunk:
            yield buf
            break
        buf += chunk

with open('input') as f:
    for line in my_readline(f, '{|}'):
        print(line)