python统计指定目录内文件的代码行数


Posted in Python onSeptember 19, 2019

python统计指定目录内文件的代码行数,程序实现统计指定目录内各个python文件的代码总行数,注释行数,空行数,并算出所占百分比

这符合一些公司的小需求,实际代码量的统计工作

效果如图

python统计指定目录内文件的代码行数

python统计指定目录内文件的代码行数

代码如下:

#coding:utf-8
import os,re
 
#代码所在目录
FILE_PATH = './'
 
def analyze_code(codefilesource):
  '''
  打开一个py文件,统计其中的代码行数,包括空行和注释
  返回含该文件总行数,注释行数,空行数的列表
  :param codefilesource:
  :return:
  '''
  total_line = 0
  comment_line = 0
  blank_line = 0
  with open(codefilesource,encoding='gb18030',errors='ignore') as f:
    lines = f.readlines()
    total_line = len(lines)
    line_index = 0
    #遍历每一行
    while line_index < total_line:
      line = lines[line_index]
      #检查是否为注释
      if line.startswith("#"):
        comment_line += 1
      elif re.match("\s*'''",line) is not None:
        comment_line += 1
        while re.match(".*'''$",line) is None:
          line = lines[line_index]
          comment_line += 1
          line_index += 1
      #检查是否为空行
      elif line =='\n':
        blank_line += 1
      line_index += 1
  print("在%s中:"%codefilesource)
  print("代码行数:",total_line)
  print("注释行数:",comment_line,"占%0.2f%%"%(comment_line*100/total_line))
  print("空行数:", blank_line, "占%0.2f%%"%(blank_line * 100 / total_line))
  return [total_line,comment_line,blank_line]
def run(FILE_PATH):
  os.chdir(FILE_PATH)
  #遍历py文件
  total_lines = 0
  total_comment_lines = 0
  total_blank_lines = 0
  for i in os.listdir(os.getcwd()):
    if os.path.splitext(i)[1] == '.py':
      line = analyze_code(i)
      total_lines,total_comment_lines,total_blank_lines=total_lines+line[0],total_comment_lines+line[1],total_blank_lines+line[2]
  print("总代码行数:",total_lines)
  print("总注释行数:",total_comment_lines,"占%0.2f%%"%(total_comment_lines*100/total_lines))
  print("总空行数:", total_blank_lines, "占%0.2f%%"% (total_blank_lines * 100 / total_lines))
 
if __name__ == '__main__':
  run(FILE_PATH)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python提取html文件中的特定数据的实现代码
Mar 24 Python
Python编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
python图像处理之镜像实现方法
May 30 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
解决Python一行输出不显示的问题
Dec 03 Python
windows下安装Python虚拟环境virtualenvwrapper-win
Jun 14 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
python统计指定目录内文件的代码行数
Sep 19 Python
python中的插入排序的简单用法
Jan 19 Python
python爬取youtube视频的示例代码
Mar 03 Python
python如何从文件读取数据及解析
Sep 19 #Python
python实现代码统计器
Sep 19 #Python
python实现代码统计程序
Sep 19 #Python
python tkinter图形界面代码统计工具(更新)
Sep 18 #Python
python3获取url文件大小示例代码
Sep 18 #Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 #Python
python3使用GUI统计代码量
Sep 18 #Python
You might like
用Flash图形化数据(一)
2006/10/09 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
js实现随机点名功能
2020/12/23 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
用python登录Dr.com思路以及代码分享
2014/06/25 Python
深入理解Python中的内置常量
2017/05/20 Python
Python退火算法在高次方程的应用
2018/07/26 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
Python实现搜索算法的实例代码
2020/01/02 Python
python实现图像外边界跟踪操作
2020/07/13 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
运动会广播稿100字
2014/01/11 职场文书
公司保密承诺书
2014/03/27 职场文书
公司寄语大全
2014/04/10 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
优秀班主任材料
2014/12/16 职场文书
如何做好工作总结!
2019/04/10 职场文书
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS