Python:统计文件行数

本文介绍了一种比较四种不同方法来计算文件行数的方式,并通过实验对比了它们的效率。这四种方法包括使用系统命令wc-l、读取所有行、逐行读取以及按块读取并计算换行符数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加了一个方法4,同时发现我的电脑上第三种方法要快一些
D:/home/work/python/files>countLines.py
linecount_1 49238
linecount_2 49238
linecount_3 49238
linecount_4 49238
linecount_1: 0.18
linecount_2: 0.16
linecount_3: 0.09
linecount_4: 0.16

D:/home/work/python/files>countLines.py
linecount_1 379813
linecount_2 379813
linecount_3 379813
linecount_4 379813
linecount_1: 1.61
linecount_2: 1.36
linecount_3: 0.85
linecount_4: 1.33



# -*- coding: utf-8 -*-
import time


def timeo(fun, n=10):
    start = time.clock()
    for i in range(n): fun()
    stend = time.clock()
    thetime = stend-start
    return fun.__name__, thetime                        #返回函数名称,函数运行10次总时间的 元组

import os

fname="YourFileName" #稍微改了一下,添加了一个文件名变量

def linecount_wc():
    return int(os.popen('wc -l nuc').read().split()[0]) #使用外部系统程序 wc -l

def linecount_1( ):                                      #使用方法1  
    return len(open(fname).readlines())                 

def linecount_2():                                      #使用方法2    
    count = 0
    for line in open(fname).xreadlines(): count += 1
    return count

def linecount_3():                                      #使用方法3   
    count = 0
    thefile = open(fname)
    while 1:
        buffer = thefile.read(65536)
        if not buffer: break
        count += buffer.count('/n')
    return count

def linecount_4():   #添加的方法4
    count=0
    for line in open(fname):
        #if(line!='/n'): count+=1
        count+=1
    return count

for f in linecount_1, linecount_2, linecount_3,linecount_4:
    print f.__name__, f()

for f in linecount_1, linecount_2, linecount_3,linecount_4:
    print "%s: %.2f"%timeo(f)

 

转自:【浸在苏打水里的玩偶 】http://hi.baidu.com/javalang/blog/item/b2f398efa62acfeccf1b3eb6.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值