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人人网登录应用实例
Sep 26 Python
python实现BackPropagation算法
Dec 14 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
python中subprocess批量执行linux命令
Apr 27 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
基于Python解密仿射密码
Oct 21 Python
python列表推导式入门学习解析
Dec 02 Python
Django如何使用jwt获取用户信息
Apr 21 Python
浅析python实现动态规划背包问题
Dec 31 Python
python tkinter Entry控件的焦点移动操作
May 22 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里8个鲜为人知的安全函数分析
2014/12/09 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
什么是反射
2012/03/17 面试题
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
先进员工获奖感言
2014/08/14 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
三严三实对照检查材料
2014/09/22 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers