一、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