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实现的简单文件传输服务器和客户端
Apr 08 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
python变量命名的7条建议
Jul 04 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
Python实现的微信红包提醒功能示例
Aug 22 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
Django3中的自定义用户模型实例详解
Aug 23 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
python爬虫用scrapy获取影片的实例分析
Nov 23 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
js验证上传图片的方法
2015/05/12 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
Python实现二分查找与bisect模块详解
2017/01/13 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
Python如何将字符串转换为日期
2020/07/31 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
公司领导班子对照材料
2014/08/18 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
化工见习报告范文
2014/10/31 职场文书
2015年试用期工作总结
2014/12/12 职场文书
公司慰问信范文
2015/03/23 职场文书
2015年公务员工作总结
2015/04/24 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android