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 17 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
Django框架封装外部函数示例
May 28 Python
Python 分享10个PyCharm技巧
Jul 13 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
python实现拼图小游戏
Feb 22 Python
如何基于线程池提升request模块效率
Apr 18 Python
基于pandas向csv添加新的行和列
May 25 Python
python2和python3哪个使用率高
Jun 23 Python
通过实例简单了解python yield使用方法
Aug 06 Python
Python机器学习之PCA降维算法详解
May 19 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版微信返回用户text输入的方法
2016/11/14 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
python 删除非空文件夹的实例
2018/04/26 Python
Python检测数据类型的方法总结
2019/05/20 Python
django 控制页面跳转的例子
2019/08/06 Python
django 模型中的计算字段实例
2020/05/19 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
Python中的面向接口编程示例详解
2021/01/17 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
Structs界面控制层技术
2013/10/11 面试题
篝火晚会主持词
2014/03/25 职场文书
小学教师寄语大全
2014/04/03 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
公务员处分决定书
2015/06/25 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android