当前位置:Gxlcms > Python > Python实现代码行数统计工具的功能(实例)

Python实现代码行数统计工具的功能(实例)

时间:2021-07-01 10:21:17 帮助过:32人阅读

本篇文章给大家带来的内容是关于Python实现代码行数统计工具的功能(实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

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

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

实现的功能:

统计每个文件的行数;

统计总行数;

统计运行时间;

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

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

排除空行;

  1. # coding=utf-8
  2. import os
  3. import time
  4. basedir = '/root/script'
  5. filelists = []
  6. # 指定想要统计的文件类型
  7. whitelist = ['php', 'py']
  8. #遍历文件, 递归遍历文件夹中的所有
  9. def getFile(basedir):
  10. global filelists
  11. for parent,dirnames,filenames in os.walk(basedir):
  12. #for dirname in dirnames:
  13. # getFile(os.path.join(parent,dirname)) #递归
  14. for filename in filenames:
  15. ext = filename.split('.')[-1]
  16. #只统计指定的文件类型,略过一些log和cache文件
  17. if ext in whitelist:
  18. filelists.append(os.path.join(parent,filename))
  19. #统计一个文件的行数
  20. def countLine(fname):
  21. count = 0
  22. for file_line in open(fname).xreadlines():
  23. if file_line != '' and file_line != '\n': #过滤掉空行
  24. count += 1
  25. print fname + '----' , count
  26. return count
  27. if __name__ == '__main__' :
  28. startTime = time.clock()
  29. getFile(basedir)
  30. totalline = 0
  31. for filelist in filelists:
  32. totalline = totalline + countLine(filelist)
  33. print 'total lines:',totalline
  34. print 'Done! Cost Time: %0.2f second' % (time.clock() - startTime)

结果:

  1. [root@pythontab script]# python countCodeLine.py
  2. /root/script/test/gametest.php---- 16
  3. /root/script/smtp.php---- 284
  4. /root/script/gametest.php---- 16
  5. /root/script/countCodeLine.py---- 33
  6. /root/script/sendmail.php---- 17
  7. /root/script/test/gametest.php---- 16
  8. total lines: 382
  9. Done! Cost Time: 0.00 second
  10. [root@pythontab script]#

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

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

以上就是Python实现代码行数统计工具的功能(实例)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行