我们经常想要统计项目的代码行数,但是如果想统计功能比较完善可能就不是那么简单了, 今天我们来看一下如何用python来实现一个代码行统计工具。

思路:首先获取所有文件,然后统计每个文件中代码的行数,最后将行数相加.

实现的功能:

统计每个文件的行数;

统计总行数;

统计运行时间;

支持指定统计文件类型,排除不想统计的文件类型;

递归统计文件夹下包括子文件件下的文件的行数;

排除空行;# coding=utf-8

import os

import time

basedir = '/root/script'

filelists = []

# 指定想要统计的文件类型

whitelist = ['php', 'py']

#遍历文件, 递归遍历文件夹中的所有

def getFile(basedir):

global filelists

for parent,dirnames,filenames in os.walk(basedir):

#for dirname in dirnames:

# getFile(os.path.join(parent,dirname)) #递归

for filename in filenames:

ext = filename.split('.')[-1]

#只统计指定的文件类型,略过一些log和cache文件

if ext in whitelist:

filelists.append(os.path.join(parent,filename))

#统计一个文件的行数

def countLine(fname):

count = 0

for file_line in open(fname).xreadlines():

if file_line != '' and file_line != '\n': #过滤掉空行

count += 1

print fname + '----' , count

return count

if __name__ == '__main__' :

startTime = time.clock()

getFile(basedir)

totalline = 0

for filelist in filelists:

totalline = totalline + countLine(filelist)

print 'total lines:',totalline

print 'Done! Cost Time: %0.2f second' % (time.clock() - startTime)

结果:[root@pythontab script]# python countCodeLine.py

/root/script/test/gametest.php---- 16

/root/script/smtp.php---- 284

/root/script/gametest.php---- 16

/root/script/countCodeLine.py---- 33

/root/script/sendmail.php---- 17

/root/script/test/gametest.php---- 16

total lines: 382

Done! Cost Time: 0.00 second

[root@pythontab script]#

统计php和python文件,非常方便。

其实大家还可以在此基础上进行改进,比如:排除注释行等等。

python 代码行数统计工具_Python实现一个代码行数统计工具相关推荐

  1. 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文数,例如32123就是一个回文数。 但事实上, 17在某种意义上也是一个回文数,因为它的二进制(10001)是一个回文数。

    //<<<<<<<<<<<<<-往下输入/插入题目---->>>>>>>> ...

  2. python实现火车票查询工具_Python 实现一个火车票查询的工具

    原标题:Python 实现一个火车票查询的工具 作者 sexycoder 本文转载自简书,转载需授权 使用 python 实现一个查询火车票的小工具 主要功能: 输入出发车站,到达车站,时间,然后返回 ...

  3. python实现杨辉三角思路_Python极简代码实现杨辉三角示例代码

    Python极简代码实现杨辉三角示例代码 杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列. 把每一行看做一个list,写一个generator,不断输出下一行的list ...

  4. python按照每行输出八个_Python/PyCharm的每行输出

    我刚开始学习Python.我一直在用R来做数据分析.RStudio的一个优点是我们可以选择一些语句,然后按Ctrl+Enter来执行这些行.RStudio将显示每行的输出.在 例如,这些行的输出:a ...

  5. python代码说明文档怎么写_Python写完代码怎么用

    Python写完代码怎么用 python运行有两种方式,一种是在python交互式命令行下运行:另一种是使用文本编辑器,在命令行中直接运行. 一.命令行与交互式命令行 首先要搞清楚这个命令行的概念. ...

  6. python exe文件运行依赖环境_python将py代码文件转换为EXE脱离环境运行

    如何将python将py代码文件编译成为EXE文件,让其能够脱离python环境独立运行? 方法是有的,下面大家请看如何来操作. 我的环境是VS2017,同时安装了ironpython 一.安装pyi ...

  7. soapui工具_python接口自动化(四)--接口测试工具介绍(详解)

    简介 "工欲善其事必先利其器",通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进 ...

  8. python实训三 编写函数,接收一个字符串,分别统计大写字母,小写字母,数字,其他字符的个数,并以元组的形式返回结果

    编写函数,接收一个字符串,分别统计大写字母,小写字母,数字,其他字符的个数,并以元组的形式返回结果 源码: intcount=[] upstrcount=[] lowstrcount=[] other ...

  9. python判断正整数是否为素数_Python判断一个整数是否为素数

    素数的定义:是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 即只能被1和自己本身整除的数 思路及步骤 给定一个大于2的整数n 令i=2 用n除i,得到余数r 判断r==0是否成立,如 ...

  10. java tomcat 日志分析工具_设计一个Tomcat访问日志分析工具

    常使用web服务器的朋友大都了解,一般的web server有两部分日志: 一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息 二是访问日志信息,它记录的访问的时间,IP,访问的资 ...

最新文章

  1. 计算机对文字信息交流方式案例,《信息交流的方式》题本梳理_教师资格面试初中信息技术...
  2. 返回Json数据浏览器带上<pre></pre>标签解决方法
  3. 不孕不育怎么办?AI帮你提高成功率
  4. 安装了但是报错找不到_安装MySQL时由于找不到vcruntime140_1.dll,无法继续安装
  5. Oracle ——如何确定性能差的 SQL
  6. Terasoluna(中文)
  7. 单因素方差分析graphpad_python单因素方差分析实例
  8. 微软官方office教程和微软官方office模板
  9. 手把手教你虚拟机安装(VMware)、Linux操作系统安装
  10. 2022 第三届字节跳动青训营,后端专场,课程报名,笔记 纲要
  11. 大学计算机网课怎么上,大学计算机课程学习路线应该是怎么样的呢?
  12. P1463 [POI2001][HAOI2007]反素数 题解
  13. win7网络里面没有计算机,Win7没有无线网络选项教你完美解决
  14. 双 JK 触发器 74LS112 逻辑功能。真值表_数字电路学习笔记(十一):时序逻辑...
  15. 【应用】Markdown 在线阅读器
  16. 大数据必备技能_大数据需要具备的5种必备技能
  17. java cms 知乎_可能是史上最全面的学习资源 — VUE 开源库篇(二)
  18. 流量回放repeater的原理分析二:repeater源码分析
  19. 大学计算机实验六文件管理与磁盘恢复,做“文件管理与磁盘恢复”实验完成以下实验报告表并提交...
  20. 线性判别分析LDA(linear discriminant analysis)与二次判别分析QDA(quadratic discriminant analysis)

热门文章

  1. 本科毕业论文EndNote格式
  2. IDEA打开README.md文件时卡死
  3. ArcGIS Runtime SDK for Android 加载shp数据,中文乱码问题
  4. 捷联惯导系统学习7.2(捷联惯导精对准 )
  5. C#andSql获取当前日期格式
  6. Apollo添加新的can通信接口的GPS设备
  7. 前端开发_HTML5_布局-div+css布局
  8. 视频教程-Linux从入门到精通(全套系列)-Linux
  9. CTF逆向总结(二)
  10. 射频微电子学_越老越吃香的射频工程师,如何才能成为一个出色的射频工程师?...