统计python或java代码行数工具,实现内容如下:
1.从命令行参数中输入统计的目录路径和文件类型
2.count_file_lines():实现单个文件行数统计
3.count_code_lines:实现指定目录文件统计,返回的是总行数和一个字典,字典中是每个文件的绝对路径和该文件的有效代码行数

#encoding=utf-8
import os
import sys
'''统计代码行数工具,实现内容如下:
1.从命令行参数中输入统计的目录路径和文件类型
2.count_file_lines():实现单个文件行数统计
3.count_code_lines:实现指定目录文件统计,返回的是总行数和一个字典,字典中是每个文件
的绝对路径和该文件的有效代码行数
'''
def count_file_lines(file_path):code_lines_num = 0comment_flag = False#多行注释起始标志位
##      with open(file_path,'r',encoding=encoding_type) as fp:with open(file_path,'r',encoding='ISO-8859-1') as fp:for line in fp:line = line.strip()if line:#去除空行if line.endswith("'''") and comment_flag==True:#多行注释的结尾comment_flag = Falsecontinueif line.endswith('"""') and comment_flag==True:#多行注释的结尾comment_flag = Falsecontinueif comment_flag == True:#多行注释的标志位为真continueif line.startswith("#encoding") or line.startswith("#-*-"):#文件第一行声明保留code_lines_num +=1continueelif line[0]=="#":#过滤掉以#开头的注释行continueelif line.startswith("'''") and line.endswith("'''")  and line!="'''":#过滤掉此种类型的:'''注释'''continueelif line.startswith('"""') and line.endswith('"""')  and line!='"""':#过滤掉此种类型的:"""注释"""continueelif line.startswith('"""') and comment_flag == False:#多行注释,以"""开头comment_flag=Truecontinueelif line.startswith("'''") and comment_flag == False:#多行注释,以'''开头comment_flag=Truecontinueelse:code_lines_num +=1return code_lines_numdef count_code_lines(path,file_type=[]):if not os.path.isabs(path):print("输入的不是绝对路径")if not os.path.exists(path):print("文件路径不存在")all_code_lines = 0file_path_dict={}if len(file_type)==0:#没有指定文件时用固定的值初始化file_typefile_type=["py","cpp","c","java","ruby","ini","go","html","css","js","txt","vbs","php","asp","sh"]if os.path.isfile(path):#文件if os.path.splitext(path)[-1][1:] in file_type:#文件扩展名为指定要统计的文件类型file_code_num = count_file_lines(path)file_path_dict[path] = file_code_numall_code_lines +=file_code_numelse:#目录for root,dirs,files in os.walk(path):for file in files:if os.path.splitext(file)[-1][1:] in file_type:#文件扩展名为指定要统计的文件类型file_code_num = count_file_lines(os.path.join(root,file))file_path_dict[os.path.join(root,file)] = file_code_numall_code_lines +=file_code_numreturn all_code_lines,file_path_dictif __name__ =="__main__":if len(sys.argv)<2:print("请输入待统计的文件绝对路径!")sys.exit()dir_path = sys.argv[1]file_type=[]if len(sys.argv)>2:for type in sys.argv[2:]:file_type.append(type)num,d = count_code_lines(dir_path,file_type)for k , v in d.items():print(k+":    "+str(v))print(num)

统计代码行数工具(升级版)相关推荐

  1. linux代码行数统计工具,统计代码行数工具 用golang实现

    首先:修改conf文件,配置要查找什么后缀的文件代码行数 使用方法:countcodeliine filename or nothing(计算可执行程序所在目录) 实现功能: 1,统计代码行数 2,可 ...

  2. webstorm代码行数统计_【Rust每周一库】Tokei 统计代码行数等信息的实用工具

    Tokei是一个按语言统计代码行数等统计信息的工具.其实这些信息还是非常有用的,首先程序猿可以用它来估计别人的实力或者观察自己实力成长的速度(神马,行数论英雄么?).其次,管理人员可以用它来估计工程的 ...

  3. 统计代码行数的方法梳理

    在日常运维工作中,会碰到对一项项目下的代码行数进行统计的需求,下面对代码行数的统计方法进行梳理,以供参考. 1)最简单的是使用wc -l直接进行代码行数统计.(wc的几个参数的解释:-c 统计字节数: ...

  4. phpstrom查看代码总行数_PHP统计代码行数的小代码

    本文实例为大家分享了PHP统计代码行数的具体代码,供大家参考,具体内容如下 想统计一下项目中一共有多少行代码,结果没找到什么好的工具,就自己写了一个. 效率不怎么样. /** * Created by ...

  5. 在项目开发中统计代码行数的6种方式

    文章目录 一.使用find和wc命令统计代码行数 进行参数的过滤筛选 命令参数简要说明 二.PowerShell工具统计代码行数 条件过滤 输出所有文件的行数 PowerShell相关命令的简要说明 ...

  6. vscode统计代码行数,前端开发配置、快捷键使用

    1.统计代码行数 使用场景是项目年终统计行数. 实现:在需要统计得文件夹右键"在文件夹中查找" ,后输入筛选得正则表达式 ^b*[^:b#/]+.*$ (注意右边小图标都点亮) 这 ...

  7. Eclipse统计代码行数

    开发过程中,经常需要统计代码行数,这时可以通过Eclipse的Search功能来实现. 步骤: 1.在Package Explorer中选中需要统计的包: 2.单击菜单Search-->File ...

  8. python计算营业额代码_python计算营业额的代码_python 统计代码行数简单实例

    python 统计代码行数简单实例 送测的时候,发现需要统计代码行数 于是写了个小程序统计自己的代码的行数. #calclate_code_lines.py import os def afileli ...

  9. 使用git log统计代码行数

    1.背景 在软件开发过程中,代码行数是一个非常重要的指标,可以用来衡量代码的质量和开发效率.Git是一个流行的版本控制系统,它可以记录和跟踪代码的修改历史.通过使用Git,我们可以很容易地统计代码行数 ...

最新文章

  1. note同步不及时 one_你的生活一团糟,就是因为不懂得管理
  2. 2019研究生新生大数据出炉!清华园迎来8900多名新主人
  3. gitee项目能用SVN拉取吗_用好 Git 和 SVN,轻松驾驭版本管理
  4. vr降噪器英文是什么_CR渲染器和VR渲染器在3d效果图上的区别
  5. .NET 大数据实时计算--学习笔记
  6. nanf flash校验_C ++中带有示例的nanf()函数
  7. activeperl安装不成功_SWOOLE进阶-00环境安装
  8. 没有mysql支持时的替代方案
  9. java中位于集合框架顶层位置的是,CoreJava第二次内测有答案
  10. sprintf参数包含本身时,结果并不符合预期
  11. Revit二次开发——单位转换
  12. OPICS 节假日维护
  13. 超级计算机x5670,x5670相当于什么cpu
  14. 移动光猫拨号,IPV6访问内网
  15. 13_ue4进阶_蒙太奇动画实现一边走一边攻击
  16. Java中的Swing概述
  17. S参数的应用|从S参数看通道阻抗匹配 | 理解插入损耗
  18. 华硕FN键补充应用下载-可以在windows的应用商店寻找进行下载,安装。-asus-keyboard Hotkeys
  19. python音频两条路径_使用Python实现音频双通道分离
  20. 企业内部培训——华微软件的培训制度

热门文章

  1. Tekton之一:如何部署起来 Tekton
  2. matlab中eacf函数,基于MATLAB的切比雪夫I型模拟低通滤波器设计
  3. 2023年JAVA JDK8的安装与配置(附JAVA8安装包)
  4. 嵌入式linux开发04-roottfs移植
  5. 行业洞察丨小微企业信息化管理痛点与解决方案
  6. 如何写好JAVA代码
  7. java如何获取Class类对象
  8. 形式化语言——时序逻辑
  9. satd 与 sad
  10. 字符串中空格符 空字符