python实现统计代码行数的小工具


Posted in Python onSeptember 19, 2019

一个用python实现的统计代码行数的小工具,供大家参考,具体内容如下

实现功能

  • 计算出某一目录以及子目录下代码文件的行数
  • 在计算代码的过程中,只对标准命名的文件进行统计,如[文件名.文件类型]
  • 排除了以“#”开头的包含文件,宏定义等,如#include, #define, #pragma等
  • 排除了c,cpp文件中的“//”, “/…/”等的注释
  • 排除了python文件中import, from 等开头的导入

使用方法

新建countLines.py文件,复制代码到文件中,将其放在想计算行数的代码目录下,直接使用Python运行即可算出该目录以及所有子目录下代码文件的行数。

1.将该python文件命名为countLines.py,放到想计算代码行数的文件目录下

python实现统计代码行数的小工具

2.其中helloworld.c文件内容如下:

python实现统计代码行数的小工具

3.用python.exe直接打开该文件或者使用python countLines.py,运行文件即可。 

python实现统计代码行数的小工具

我们可以看到,统计代码行的时候我们排除了两个空行以及开头的包含文件行,因此有效代码行为5行

代码实现

#!/usr/bin/env python
# -- coding: utf-8 --
# @Time : 2018/3/5 13:55
# @Author : likewind
# @mail : likewind1993@163.com
# @File : countLines.py
# @Software: sky-studio.cn
import os
'''
返回每个文件行数,其中行数不包括以“#”开头的包含文件,宏定义等,
排除了c,cpp文件中的“//”, “/*...*/”等的注释,
排除了python文件中import, from 等开头的导入
'''

def get_lines(file_name):
 f = open(file_name)
 #flag用于处理c,cpp中“/*...*/”多行注释
 flag = False
 count = 0
 while True:
 #读取文件并去除开头的空格,制表符
 line = f.readline()
 line = line.lstrip(' \t')
 if not line:
  break
 #如果该行有“#”, “import”等打头的字符,忽略该行
 if flag == False:
  if line[0:1] == "#" or line[0:6] == "import" or line[0:4] == "from" or line == "\n" or line[0:2] == "//":
  continue
 #如果该行存在“/*”并且不存在“*/”,表明多行注释未在一行结束,flag=True
 if line.find("/*") != -1 :
  if line.find("*/") != -1:
  continue
  else:
  flag = True
  continue
 #如果flag=True,表明处于多行注释中,判断是否有“*/”结尾
 if flag == True :
  if line.find("*/") != -1:
  flag = False
  if line[-2:] != "*/":
   count = count+1
  continue
 #排除以上条件后,行数增加一
 count = count+1
 f.close()
 return count
'''
计算该文件目录下所有符合条件的行数
'''
def count_lines(file_dir):
 #total_lines表示总行数,file_nums表示总文件数
 total_lines = 0
 file_nums = 0
 for root, dirs, files in os.walk(file_dir):
 for file in files:
  #不计算本文件的行数
  if file == "countLines.py":
  continue
  #只计算规范命名文件, 如[文件名.文件类型]
  file_type = file.split('.')
  if len(file_type) > 1 :
  #如果想计算其他类型的文件,可以在这里进行修改
  if file_type[1] not in ["py", "c", "cc", "cpp", "h"]:
   continue
  else:
  continue
  file_name = root +"\\" + file
  lines = get_lines(file_name)
  total_lines = total_lines + lines
  print file_name + " contains lines : " + repr(lines)
  file_nums = file_nums + 1
 #输出结果
 print "------------------------------------"
 print "Total Files : " + repr(file_nums)
 print "Total lines : " + repr(total_lines)
 print "------------------------------------"

if __name__ == '__main__':
 cur_path = os.path.split(os.path.realpath(__file__))[0]
 count_lines(cur_path)
 raw_input("Press any key to exit...")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
Python iter()函数用法实例分析
Mar 17 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
实例讲解Python中整数的最大值输出
Mar 17 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 Python
python匿名函数的使用方法解析
Oct 10 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
python动态文本进度条的实例代码
Jan 22 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
用Python实现一个打字速度测试工具来测试你的手速
May 28 Python
python日志模块logbook使用方法
Sep 19 #Python
python统计指定目录内文件的代码行数
Sep 19 #Python
python如何从文件读取数据及解析
Sep 19 #Python
python实现代码统计器
Sep 19 #Python
python实现代码统计程序
Sep 19 #Python
python tkinter图形界面代码统计工具(更新)
Sep 18 #Python
python3获取url文件大小示例代码
Sep 18 #Python
You might like
PHP编实现程动态图像的创建代码
2008/09/28 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
php生成动态验证码gif图片
2015/10/19 PHP
9个比较实用的php代码片段
2016/03/15 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
酒店销售经理岗位职责
2014/01/31 职场文书
三爱活动实施方案
2014/03/19 职场文书
海飞丝的广告词
2014/03/20 职场文书
班级团队活动方案
2014/08/14 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
让子弹飞观后感
2015/06/11 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python