代码语言:javascript复制
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 17 17:15:40 2014
@author: author
"""
import os;
path_head = '代码路径头部'
path_list = '代码绝对路径'
fileClasses = ['java'] #需要统计的文件类型
totalLines = 0
commentAll = 0
normalAll = 0
whiteAll = 0
for root,dirs,files in os.walk(path_head path_list):
#处理路径中的 '/'
dirLen = len(root)
lastChar = root[dirLen-1:dirLen]
if lastChar =='/' :
root = root[0:dirLen-1]
for afile in files:
fileDir = root '/' afile
#过滤文件类型
strs = afile.split('.')
fileClass = strs[len(strs)-1]
if fileClass not in fileClasses :
continue
with open(fileDir) as file:
commentLines = 0
whiteLines = 0
normal = 0
comment = False
lines = file.readlines()
for i in lines:
i = i.strip()
#空行
if(i==''):
whiteLines=whiteLines 1
#注释 /* */
elif(i.startswith('/*') and True==i.endswith('*/')):
commentLines=commentLines 1
#注释 /* 开头
elif(i.startswith('/*') and False==i.endswith('*/')):
commentLines=commentLines 1
comment=True
#注释 中间 和 */ 结尾
elif(True==comment):
commentLines=commentLines 1
if(i.endswith('*/')):
comment=False
#注释 //
elif(i.startswith('//')):
commentLines=commentLines 1
#代码
else:
normal=normal 1
#单文件统计结果
print ('%s 代码行数:%d 空行数:%d 注释行数:%d'%(fileDir[len(path_head):], normal, whiteLines, commentLines))
commentAll = commentLines
normalAll = normal
whiteAll = whiteLines
#统计结果
print ('总行数:%d' %(commentAll normalAll whiteAll))
print ('总代码行数:%d' %(normalAll))
print ('总注释行数:%d' %(commentAll))
print ('总空行数:%d' %(whiteAll))
参考网上的代码修改而成,没有什么技术含量。