美文网首页
Python 计算文件行数

Python 计算文件行数

作者: kakarotto | 来源:发表于2020-11-05 10:59 被阅读0次

Python 实现,读取文件行数,类似 wc -l 的功能,小文件无所谓,如果遇到大文件(5G),就要选择一种性能较高的方法了。

列出一下方法:

1. readline 读所有行

def readline_count(file_name):
    return len(open(file_name).readlines())

2. 依次读取文件每行内容进行计数

def simple_count(file_name):
    lines = 0
    for _ in open(file_name):
        lines += 1
    return lines

3. sum 计数

def sum_count(file_name):
    return sum(1 for _ in open(file_name))

4. enumerate 枚举计数

def enumerate_count(file_name):
    with open(file_name) as f:
        for count, _ in enumerate(f, 1):
            pass
    return count

5. buff count 每次读取固定大小,然后统计行数

def buff_count(file_name):
    with open(file_name, 'rb') as f:
        count = 0
        buf_size = 1024 * 1024
        buf = f.read(buf_size)
        while buf:
            count += buf.count(b'\n')
            buf = f.read(buf_size)
        return count

6. 调用使用 wc 命令计算行

def wc_count(file_name):
    import subprocess
    out = subprocess.getoutput("wc -l %s" % file_name)
    return int(out.split()[0])

7. 在buff_count基础上引入partial

def partial_count(file_name):
    from functools import partial
    buffer = 1024 * 1024
    with open(file_name) as f:
        return sum(x.count('\n') for x in iter(partial(f.read, buffer), ''))

8. iter count,在buff_count基础上引入itertools 模块

def iter_count(file_name):
    from itertools import (takewhile, repeat)
    buffer = 1024 * 1024
    with open(file_name) 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)
方法 100M 500M 1G 5G
readline_count 0.25 1.82 3.27 45.04
simple_count 0.13 0.85 1.58 13.54
sum_count 0.15 0.77 1.59 14.07
enumerate_count 0.15 0.8 1.6 13.37
buff_count 0.13 0.62 1.18 10.21
wc_count 0.09 0.53 0.99 9.47
partial_count 0.12 0.55 1.11 8.92
iter_count 0.08 0.42 0.83 8.33

相关文章

  • Python 计算文件行数

    Python 实现,读取文件行数,类似 wc -l 的功能,小文件无所谓,如果遇到大文件(5G),就要选择一种性能...

  • 行数统计

    用python实现简单的行数统计功能(暂未排除注释行,仅计算除却空行以外的行数) 步骤 遍历目录下文件名,获取后缀...

  • linux 和 mac 下计算特点目下的代码行数

    计算每个文件的行数,单独输出代码(以php语言为例): 计算该目录下所有文件的代码行数之和(以php语言为例):

  • Python读取多个Excel文件并结合不同xlsx表格数据计算

      本文介绍基于Python语言,实现对多个不同的Excel文件进行数据读取与平均值计算的方法。   又到了一年一...

  • 实现python中的代码行数统计思路:

    实现python中的代码行数统计思路: 统计文件中代码的总行数减去空行单行注释以及多行注释功能: 1.获取文件内容...

  • 使用 Linux 命令统计代码行数

    计算当前目录下(排除 ./.idea、./.git 目录)java 文件的总行数

  • python--并行计算

    应用python进行数据挖掘或计算时,往往需要遍历多种参数进行数据建模,而单次的建模或计算有时候非常耗时,这时候可...

  • NumPy是一个Python库

    简介NumPy是一个Python库,用于对大型数据集进行数值计算。Numpy是Numerical Python的缩...

  • Python-Scipy进行数值积分

    Python的Scipy模块中拥有大量的数值计算函数,方便我们快速进行数值计算。 Scipy中的integrate...

  • Python--数据分析概述

    为什么使用Python进行数据分析 Python拥有巨大而活跃的科学计算社区 Python不断改良的库(主要是pa...

网友评论

      本文标题:Python 计算文件行数

      本文链接:https://www.haomeiwen.com/subject/ttsovktx.html