python实现统计代码行数的方法
发布时间:2020-05-23 22:28:39 所属栏目:Python 来源:互联网
导读:本文实例讲述了python实现统计代码行数的方法。分享给大家供大家参考。具体实现方法如下:
|
本文实例讲述了python实现统计代码行数的方法。分享给大家供大家参考。具体实现方法如下:
'''
Author: liupengfei
Function: count lines of code in a folder iteratively
Shell-format: cmd [dir]
Attention: default file encode is utf8 and default file type is java-source-file. But users can customize this script by just modifing global variables.
'''
import sys
import os
import codecs
from _pyio import open
totalCount = 0;
fileType = '.java'
descLineBegin = '//'
descBlockBegin = r'/**'
descBlockEnd = r'*/'
fileEncode = 'utf-8'
def main():
DIR = os.getcwd()
if len(sys.argv) >= 2:
DIR = sys.argv[1]
if os.path.exists(DIR) and os.path.isdir(DIR):
print('target directory is %s' % DIR)
countDir(DIR)
print('total code line is %d' % totalCount)
else:
print('target should be a directory!')
def isFileType(file):
return len(fileType) + file.find(fileType) == len(file)
def countDir(DIR):
for file in os.listdir(DIR):
absPath = DIR + os.path.sep + file;
if os.path.exists(absPath):
if os.path.isdir(absPath):
countDir(absPath)
elif isFileType(absPath):
try:
countFile(absPath)
except UnicodeDecodeError:
print(
'''encode of %s is different,which
is not supported in this version!'''
)
def countFile(file):
global totalCount
localCount = 0
isInBlockNow = False
f = codecs.open(file,'r',fileEncode);
for line in f:
if (not isInBlockNow) and line.find(descLineBegin) == 0:
pass;
elif (not isInBlockNow) and line.find(descBlockBegin) >= 0:
if line.find(descBlockBegin) > 0:
localCount += 1
isInBlockNow = True;
elif isInBlockNow and line.find(descBlockEnd) >= 0:
if line.find(descBlockEnd) + len(descBlockEnd) < len(line):
localCount += 1
isInBlockNow = False;
elif (not isInBlockNow) and len(line.replace('s+','')) > 0:
localCount += 1
f.close()
totalCount += localCount
print('%s : %d' % (file,localCount))
if __name__ == '__main__':
main();
希望本文所述对大家的Python程序设计有所帮助。 您可能感兴趣的文章:
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读
