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
正文完
微信搜一搜“奇悦电脑科技”或扫描二维码关注我们
