python获取大文件行数

Python面向对象 同时被 3 个专栏收录
2 篇文章 0 订阅
8 篇文章 0 订阅
5 篇文章 0 订阅

当需要用python获取一个文件行数时,如果文件小的话,直接存放在列表中len获取即可,可是当一个文件如果超过服务器内存值时,此时的进程就会被kill。

#获取一般大小文件时候,如下获取:

def get_file_count_1(file_path):
    cnt = 0
    with open(file_path,mode='rb')as f:
        for line in f.readlines():#将文件存放在列表中
            cnt += 1
    return cnt

但是上边的函数对于超大文件会有问题
改写后:
这样完全可以读取大文件行数了

def get_file_count_1(file_path):
    cnt = 0
    byte_n = byte("\n",encoding="utf-8")
    with open(file_path,mode = 'rb')as f:
        while 1:
            buffer = f.read(8*1024*1024)#每次读取8MB
            if not buffer:
                break
            cnt+=buffer.count(byte_n)#获取每个8MB中有几个换行
    return cnt
            

但是上边有点啰嗦,再改写后就是利用open 读取的时候,类似是生成器的惰性执行,这样也不会撑爆内存,具体如下:

def get_file_count_1(file_path):
    cnt = 0
    with open(file_path,mode = 'rb') as f:
        for line in f:
            cnt += 1
    return cnt
  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值