python实现的代码行数统计代码,python代码行数统计,''' Aut


'''      Author: liupengfei    Function: count lines of code in a folder iterativelyShell-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 sysimport osimport codecsfrom _pyio import opentotalCount = 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, whichis 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();

评论关闭