一、python统计文件行数
python实现的适用于大文件的行数统计代码。
例子:
#!/usr/bin/python
#
import time
def block(file,size=65536):
while True:
nb = file.read(size)
if not nb:
break
yield nb
def getLineCount(filename):
with open(filename,"r",encoding="utf-8") as f:
return sum(line.count("n") for line in block(f))
if __name__ == "__main__":
import sys
import os
if len(sys.argv) != 2:
print("error imput argument")
sys.exit(-1)
if not os.path.isfile(sys.argv[1]) :
print(sys.argv + " is not a file")
sys.exit(-1)
start_time = time.time()
print(getLineCount(sys.argv[1]))
print(time.time() - start_time ,"seconds")
二、python实现代码行数统计
python统计代码行数
#!/usr/bin/python
'''
File : count.py
Author : Mike
E-Mail : Mike_Zhang@live.com
'''
import sys,os
extens = [".c",".cpp",".hpp",".h"]
linesCount = 0
filesCount = 0
def funCount(dirName):
global extens,linesCount,filesCount
for root,dirs,fileNames in os.walk(dirName):
for f in fileNames:
fname = os.path.join(root,f)
try :
ext = f[f.rindex('.'):]
if(extens.count(ext) > 0):
print 'support'
filesCount += 1
print fname
l_count = len(open(fname).readlines())
print fname," : ",l_count
linesCount += l_count
else:
print ext," : not support"
except:
print "Error occur!"
pass
if len(sys.argv) > 1 :
for m_dir in sys.argv[1:]:
print m_dir
funCount(m_dir)
else :
funCount(".")
print "files count : ",filesCount
print "lines count : ",linesCount
raw_input("Press Enter to continue")
使用方法
1、针对本目录
./count.py
2、统计多个目录
./count.py /tmp ~
三、python统计一个文本中重复行数的方法
python如何统计一个文本中重复行数,介绍了Python中dict对象用法。
python统计一个文本中重复行数
文件:
2
3
1
2
期望得到
2,2
3,1
1,1
解决问题的思路:
出现的文本作为key, 出现的数目作为value,然后按照value排除后输出
最好按照value从大到小输出出来,可以参照:
代码:
补充说明:
1. python的dict对象的两个方法:
items方法将所有的字典项以列表的方式返回, 这些列表项中每一项都来自于(键, 值)
iteritems方法与items的作用大致相同, 但是返回一个迭代器对象而不是列表
2. python的内建函数sorted