`
lantian_123
  • 浏览: 1368540 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

统计文件中的行数

 
阅读更多
#!/bin/env python
from timeit import Timer
def timeKeeper(func,num=100):
    t = Timer(func.__name__+"()","from __main__ import "+func.__name__) 
    thetime = t.timeit(num)
    return func.__name__,thetime

def linecount1():   
    length= len(open('ABBREV.txt','rU').readlines())   #1
    return length

def linecount2():
    count=-1
    for count,line in enumerate(open('ABBREV.txt')):
        pass
    return count+1   #2

def linecount3():
    count =0
    thefile=open('ABBREV.txt','rU')
    while True:
        buffer = thefile.read(65536)
        if not buffer:break
        count+=buffer.count('\n')
    return count


for f in linecount1,linecount2,linecount3:
    print f.__name__,f()

for f in linecount1,linecount2,linecount3:
    print "%s:%.2f"%timeKeeper(f)

原文件大小1993KB 

 

运行结果 写道
linecount1 7907
linecount2 7907
linecount3 7907
linecount1:1.19
linecount2:1.14
linecount3:0.77
 

 

写这段代码总结:

 

1、三种方式速度上差别不是很明显,如果文件超大,第一种方式linecouont1可能会很慢,因为程序会一次性把文件读入内存,如果内存太小可能还会报错。第二种速度稍快,适合于大文件。第三种方式一次读取固定字节,并计算其中的换行符,这种方法速度很快,因为这里统计的是字符"\n"。

 

 

2、代码注释1处如果写成:

 

len= len(open('ABBREV.txt','rU').readlines()) 
return len

 就会有异常:UnboundLocalError: local variable 'len' referenced before assignment

 

究其原因是在给变量len赋值的时候就已经调用了len函数,python解释器在此处不再把len当成函数来处理,因为用户已经把python的执行环境中的len函数用用户自定义的len给覆盖了。既然被覆盖了len,而这里在给len赋值之前,len已经被引用(len(open....)),所以报错。

 

3、代码注释2除如果写成:

 

return count+=1

 

 会报 invalid syntax,语法错误,此语法不同于Java,在Python中,赋值语句不能作为合法的表达式,赋值语句在python中没有返回值

 

参考:

python cookbook

UnboundLocalError

python 计时工具

 

作者:liuzhijun  转载请注明出处,谢谢合作

0
3
分享到:
评论

相关推荐

    Python:统计文件行数

    根据提供的信息,我们可以总结出以下关于...通过上述分析,我们可以看到在Python中统计文件行数有多种方法可供选择,每种方法都有其适用的场景。实际应用中,可以根据文件的大小和特定的需求来选择最合适的方法。

    统计文件代码行数的工具

    标题中提到的“统计文件代码行数的工具”可能是一个独立的应用程序,例如“CountLines.exe”。这个可执行文件很可能是为Windows操作系统设计的,用于快速扫描指定目录下的源代码文件并计算代码行数。它可能支持多种...

    统计源文件行数

    在IT行业中,统计源文件行数是一项常见的任务,特别是在软件开发和代码维护的过程中。这个任务有助于我们理解代码的规模,评估项目的复杂性,以及在性能优化时作为参考。以下是一些与"统计源文件行数"相关的知识点:...

    Shell脚本统计文件行数的8种方法

    获取单个文件行数 文件:test1.sh 行数:20 方法一 代码如下: awk ‘{print NR}’ test1.sh|tail -n1 如图所示: 方法二 代码如下: awk ‘END{print NR}’ test1.sh 如图所示: 方法三 代码如下: grep -n “” ...

    统计源代码行数工具exe

    "统计源代码行数工具exe"正是这样一款实用工具,它允许用户快速地对代码库进行分析,统计不同类型的代码文件行数。 这款工具的主要功能在于它的易用性和灵活性。作为一个.exe可执行文件,用户无需安装任何额外的...

    统计文件行数(VB。NET)

    在VB.NET中,统计文件行数是一项常见的任务,特别是在数据处理和分析的场景下。这个程序实例为你提供了一个基础的解决方案,帮助初学者理解如何利用VB.NET进行文件输入/输出(I/O)操作。下面我们将详细探讨相关的知识...

    bat脚本统计多个.txt文件行数之和

    bat脚本统计多个.txt文件行数之和

    统计文件行数

    非常好用的小程序,可以轻松统计文件的行数

    统计路径下所有文件任意格式代码行数

    在IT行业中,统计代码行数是一项常见的任务,特别是在软件开发、项目管理和代码审计的过程中。这个压缩包提供的工具显然是为了帮助用户快速、方便地在Windows环境下完成这个任务,无需额外的配置,只需解压后运行run...

    python可以统计文件的行数

    python可以统计文件的行数,你相信吗?不管你信不信反正我信了。下面我们来看一下python怎样统计文件的行数,代码很简单,我也做了注释,很简单的实现。。。.zip

    代码行数统计工具

    标题提到的“代码行数统计工具”是专门用于计算源代码文件中行数的实用程序,适用于各种项目。这种工具能够帮助开发者、项目经理和质量保证人员了解项目的整体状况,进行进度跟踪、资源规划和复杂性分析。 代码行数...

    java实现的svn统计修改代码行数完整源码

    这些文件可能并不是直接相关的统计代码行数的代码,但它们是构建和运行Java项目所必需的。 总的来说,通过Java实现的这个工具,我们可以自动化地获取SVN仓库中的代码修改情况,这对于项目管理和团队协作具有重要的...

    统计文件夹下文件行数

    除了编写脚本,还有一些现成的工具和命令行工具,如`wc`(在Unix/Linux系统中)或某些IDE(如Visual Studio Code)提供的插件,也能快速统计文件行数。 综上所述,"统计文件夹下文件行数"是一个实用的IT技能,它...

    VBCodeLines 代码行数统计工具

    - **代码行数统计**:VBCodeLines能够精确计算VB6项目中各个模块、类、过程的代码行数,包括空行、注释行和实际代码行。 - **分类统计**:它区分了不同类型的代码行,如常量定义、变量声明、函数、过程等,帮助...

    统计代码行数的Eclipse插件

    4. 查看结果:统计结果通常会在一个弹出窗口或者Eclipse的输出视图中显示,列出了不同类型的代码行数,比如总行数、注释行数、空行数以及实际代码行数。 5. 分析与优化:根据统计结果,开发者可以判断代码是否有...

    统计源代码行数工具

    在软件开发过程中,统计源代码行数是一种常见的度量方式,可以帮助开发者理解项目的规模、复杂性和维护成本。本文将深入探讨“统计源代码行数工具”及其重要性,并提供一些实用的方法来完成这项任务。 首先,我们要...

    C# 统计代码行数

    在C#编程中,统计代码行数是一项常见的需求,特别是在软件开发过程中进行代码质量管理或评估项目规模时。本文将详细讲解如何使用Visual Studio 2013(VS2013)来统计代码行数,并扩展到处理不同文件类型以及包含多个...

    用python脚本计算某一个文件的行数

    python可以统计文件的行数,你相信吗?不管你信不信反正我信了。下面我们来看一下python怎样统计文件的行数,代码很简单,我也做了注释,很简单的实现。。。

Global site tag (gtag.js) - Google Analytics