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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python代码行数统计工具有很多种,以下是其中几种常用的工具: 1. cloc:cloc是一款开源的多语言代码行数统计工具,可以统计各种编程语言的代码行数,包括Python。它可以生成详细的代码统计报告,包括代码行数、空行数、注释行数等。使用cloc,您可以通过命令行或者图形界面界面来统计Python代码行数。 2. Pygount:Pygount是一个基于Python代码行数统计工具,它可以统计各种编程语言的代码行数,包括Python。Pygount提供了一个简单易用的命令行界面,可以输出代码行数统计结果。 3. SLOCCount:SLOCCount是一个流行的代码行数统计工具,可以统计多种编程语言的代码行数。它可以生成详细的代码行数统计报告,包括代码行数、空行数、注释行数等。SLOCCount可以通过命令行界面或者图形界面来统计Python代码行数。 4. Radon:Radon是一个Python代码复杂性分析工具,它也可以用来统计代码行数。Radon提供了各种度量方法,包括LOC (Lines of Code)、LLOC (Logical Lines of Code)、SLOC (Source Lines of Code)等,可以帮助您更全面地了解代码的复杂性和行数。 以上是几种常用的Python代码行数统计工具,您可以根据自己的需求和喜好选择适合的工具进行使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python实现代码行数统计工具](https://blog.csdn.net/weixin_30664539/article/details/99054675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [chatgpt赋能pythonPython代码行数统计-统计Python代码行数的常用工具与使用方法](https://blog.csdn.net/findyi123/article/details/130980303)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值