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实现异步回调机制代码分享
Jan 10 Python
Python的print用法示例
Feb 11 Python
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
Jul 18 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
python3人脸识别的两种方法
Apr 25 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
python实现tail实时查看服务器日志示例
Dec 24 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
Python 抓取数据存储到Redis中的操作
Jul 16 Python
超详细Python解释器新手安装教程
May 10 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
php中异常处理方法小结
2015/01/09 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
js验证上传图片的方法
2015/05/12 Javascript
javascript模块化简单解析
2016/04/07 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
Python获取linux主机ip的简单实现方法
2016/04/18 Python
python append、extend与insert的区别
2016/10/13 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
基于Python的接口测试框架实例
2016/11/04 Python
python 实现倒排索引的方法
2018/12/25 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
回门宴答谢词
2014/01/13 职场文书
商场中秋节广播稿
2014/01/17 职场文书
迟到检讨书大全
2014/01/25 职场文书
秦兵马俑教学反思
2014/02/07 职场文书
旅游节目策划方案
2014/05/26 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
2014年教研员工作总结
2014/12/23 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android