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中optionParser模块的使用方法实例教程
Aug 29 Python
浅析Git版本控制器使用
Dec 10 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
python 获取utc时间转化为本地时间的方法
Dec 31 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
解决Django加载静态资源失败的问题
Jul 28 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
Python列表倒序输出及其效率详解
Mar 04 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
jupyter 导入csv文件方式
Apr 21 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
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
Python微信库:itchat的用法详解
2017/08/14 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
Python装饰器结合递归原理解析
2020/07/02 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
用Python制作音乐海报
2021/01/26 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
HTML5 weui使用笔记
2019/11/21 HTML / CSS
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
校长先进事迹材料
2014/02/01 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
2015小学师德工作总结
2015/07/21 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript