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配置文件解析模块ConfigParser使用实例
Apr 13 Python
Django中更新多个对象数据与删除对象的方法
Jul 17 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
Python 串口读写的实现方法
Jun 12 Python
通过python实现随机交换礼物程序详解
Jul 10 Python
pandas 如何分割字符的实现方法
Jul 29 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
python 爬虫请求模块requests详解
Dec 04 Python
python用分数表示矩阵的方法实例
Jan 11 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
浅析php单例模式
2014/11/25 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php图片裁剪函数
2018/10/31 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
JavaScript中的Location地址对象
2008/01/16 Javascript
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
Python批量查询关键词微信指数实例方法
2019/06/27 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
五年级数学教学反思
2014/02/11 职场文书
复试通知单模板
2015/04/24 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
党章学习心得体会2016
2016/01/14 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
导游词之韩国济州岛
2019/10/28 职场文书