加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python实现的代码行数统计代码

发布时间:2020-12-17 17:19:10 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 ''' Author: liupengfei Function: count lines of code in a folder iterativelyShell-format: cmd [dir] Attention: default file encode is utf8 a

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

'''
      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();

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读