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