python使用yield读取GB级别的txt文本文件

其实本质还是在于yield函数的使用,代码如下:

# 逐行读取
def read_big_file(fpath):
    with open(fpath,"r",encoding="utf8") as f:
        while True:
            line = f.readline()
            if not line:
                break
            yield line

# 应该很少有人直接用read确认读取多少字节吧
def read_big_file(fpath):
    BLOCK_SIZE = 1024
    with open(fpath, 'rb') as f:
        while True:
            block = f.read(BLOCK_SIZE) #其实就是换这句就可以了
            if not block:
                yield block

               
if __name__=="__main__":
    a=read_big_file("knowledge/Knowledge_1215133704.txt")
    for i in range(20):
        print(f"{i}\t{next(a).strip()}")

输出结果如下(字段之间用\n隔开了,行之间使用\n隔开):

0       !=      中文名  不等于
1       !=      属性    编程语言用符号
2       !=      意思    数/变量 不等于 另一个 数/变量
3       !DOCTYPE        中文名  !文档类型
4       !DOCTYPE        外文名  DOCument TYPE
5       !DOCTYPE        外语缩写        !DOCTYPE
6       !DOCTYPE        类型    文档类型声明
7       "131"领军人才   中文名  “131”领军人才
8       "131"领军人才   人才工程        山西省高等学校131领军人才工程
9       "131"领军人才   别名    ​131领军人才
10      "131"领军人才   实施办法        山西省高等学校131领军人才工程实施办法
11      "523"任务与青蒿素研发访谈录     ISBN    9787553929231
12      "523"任务与青蒿素研发访谈录     丛书    20世纪中国科学口述史
13      "523"任务与青蒿素研发访谈录     书名    “523”任务与青蒿素研发访谈录
14      "523"任务与青蒿素研发访谈录     作者    屠呦呦,罗泽渊,李国桥,张剑方,吴滋霖,施凛荣等口述/黎润红访问整理
15      "523"任务与青蒿素研发访谈录     出版时间        2015-11
16      "523"任务与青蒿素研发访谈录     出版社  湖南教育出版社
17      "523"任务与青蒿素研发访谈录     定价    85.0018      "523"任务与青蒿素研发访谈录     装帧    平装
19      "523"任务与青蒿素研发访谈录     页数    485

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值