利用python逐行读取文件

        我们在日常处理文件时,经常遇到一些需要对文件每行进行相同或不同操作的情况。在执行相应操作前我们当然需要首先做到逐行读取文件。在博主尝试后,发现python中有这几种方法。

        一,readline()

        readline是指一次读取文档中的一行(以'\n‘为分隔符)。这种情况适用于我们已经知道文档有多少行。代码示例如下:

with open('.\doc.txt','r') as f:
    for _ in range(100):
        line = f.readline()
    .....

这里假设我们的文档有100行,那么执行100次循环即可。这种方法缺点就是我们需要预先知道文档的总行数

        二,readlines()

        readlines()是将文档的所有行一次读取到一个列表中,依旧是以\n作为分隔符,\n也包含在列表的每个元素中。代码实例如下:

with open('.\doc.txt','r') as f:
    lines = f.readlines()
....

接下来只需要循环lines这个列表就可以执行相应操作了。但是当文档很大时,这种方法会占用较大内存

那么有什么方法可以弥补上述两种方法的缺点呢?可以参考博主考虑到的第三种方法。

        三,:= 和 lambda 运算符

        第三种方法结合了海象运算符:=和lambda表达式。首先介绍海象运算符,海象运算符是python3.8加入的新运算符,它允许我们在执行表达式的同时执行赋值运算。lambda表达式是python函数的简写方式。代码如下:

get_line = lambda : f.readline()

with open('.\doc.txt','r') as f:
    while line := get_line():
        .....

我们首先定义了get_line函数,然后在上下文管理器中加入了while循环,每次循环会执行一个get_line函数(读取文档中的一行),并将值赋值给line变量,当读取到文档结尾时循环结束。这样我们就可以在不知晓文档行数并且避免内存占用的情况下,对文档逐行读取并执行相应操作。

        欢迎大家在评论区指出不足,积极讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值