1. 首页
  2. 运维开发
  3. Python

使用Python统计文件的行数

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

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code