使用Python统计文件的行数

723 views次阅读
没有评论

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

正文完
微信搜一搜“奇悦电脑科技”或扫描二维码关注我们
post-qrcode
 0
章郎虫
版权声明:本站原创文章,由 章郎虫 于2018-05-07发表,共计1052字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。