使用Python统计文件的行数

发表时间:2018-05-07 15:16 | 分类:Python | 浏览:1,293 次

Linux下使用wc可以很快的统计文件行数,速度也比较快,例如:

wc -l /etc/passwd

使用python怎么统计?有几个思路。

方法1:读文件统计

例如:

#!/usr/bin/env python
#encoding:utf8
import time
start_time = time.time()
with open("/tmp/nbhao.org.log", "r") as f:
    print sum( line.count("\n") for line in f)
print time.time() - start_time,"seconds"

这个方法统计速度慢。

方法2:调用wc命令统计

例如:

#!/usr/bin/env python
#encoding:utf8
import time,os
start_time = time.time()
os.system("wc -l /nbhao.org.log")
print time.time() - start_time,"seconds"

这个方法不适用windows,可迁移性查。

方法3:分块读文件

例如:

#!/usr/bin/env python
#encoding:utf8

import time
start_time = time.time()
 
logs_file = open("/tmp/nbhao.org.log",'r')
count = 0
while True:
    buffer = logs_file.read(1024 * 8192)
    if not buffer:
        break
    count += buffer.count('\n')
logs_file.close()
print count
 
print time.time() - start_time,"seconds"

方法4:使用enumerate

例如:

#!/usr/bin/env python
#encoding:utf8

import time
start_time = time.time()

count = -1
for count,line in enumerate(open("/tmp/nbhao.org.log",'r')):
    pass
count += 1
print count
 
print time.time() - start_time,"seconds"

方法4与方法3差不多,但仔细观察发现方法3比方法4要耗内存。

避免使用这个方法,会耗内存。

count = len (open ('/tmp/nbhao.org.log','r' ).readlines())

 

参考:https://www.linuxhub.org/?p=3104

本文标签:

本文链接:https://www.sijitao.net/2652.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

一键脚本 博客历程 留言联系 文章归档 网站地图 谷歌地图
Copyright © 2010-2024 章郎虫博客 All Rights Reserved.