python 获取数据量大的tsv文件的行数

由于数量很大,所以一般的遍历方法耗时严重,

所以我推荐使用迭代器来做:

    with open(res.FILE_PATH[tsv_name], encoding="gb18030", errors="ignore") as f:
        count = sum(1 for _ in f)

可以看到迭代4503241行数据的耗时

还有个效率极高的方法:

# 高效计算文件行数
# file_name: 携带路径的文件名字
def iter_count(file_name: str):
    from itertools import (takewhile, repeat)
    buffer = 1024 * 1024
    with open(file_name, errors='ignore') as f:
        buf_gen = takewhile(lambda x: x, (f.read(buffer) for _ in repeat(None)))
        return sum(buf.count('\n') for buf in buf_gen)

效率是前面那种的10倍左右。

也可以用:

.read_chunk(n)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值