python实现代码行数统计
2015-03-03 22:14
746 查看
第一步:我们应该定义一个static统计函数,要求函数能对指定路径,如果是目录能够递归访问,如果是文件就对文件进行行数计算。
第二步:实现文件行数计算函数功能,统计文本文件行数,过滤空白行(代码注释涉及到很多情况暂时不处理),并将统计结果保存在以文件扩展名为key的字典result里。
第三步:实现文件过滤功能函数,因为文本分为文本文件和二进制文件,对于不符号要求的文件不计算在内。以下是一种较简单的实现方式:
完成以上三个步骤,一个简单的代码统计工具实现了,完整代码如下:
运行结果:
前后总共花了15min左右就完成了这个小程序,突然有点喜欢上python了。
import os def static(path = '.'): if os.path.isdir(path): for x in os.listdir(path): childdir = os.path.join(path, x) if os.path.isdir(childdir): static(childdir) elif os.path.isfile(childdir): clacFilelines(childdir) elif os.path.isfile(path): clacFilelines(path) return
第二步:实现文件行数计算函数功能,统计文本文件行数,过滤空白行(代码注释涉及到很多情况暂时不处理),并将统计结果保存在以文件扩展名为key的字典result里。
def clacFilelines(filepath): vpath = os.path.splitext(filepath) ext = vpath[1].lower() if not ext.strip(): return False if not isTextFile(ext): return False lines = 0 with open(filepath, 'rU') as f: filelist = f.readlines() for line in filelist: if not line.strip(): continue lines += 1 if ext in result: result[ext] += lines else: result[ext] = lines print 'file:%s lines:%d' %(filepath, lines) return True
第三步:实现文件过滤功能函数,因为文本分为文本文件和二进制文件,对于不符号要求的文件不计算在内。以下是一种较简单的实现方式:
def isTextFile(ext): tExt = ('.c', '.cpp', '.h', '.py', '.htm', '.html', '.txt', '.lua', '.ini', '.hpp', '.lua', '.cfg') if ext in tExt: return True return False
完成以上三个步骤,一个简单的代码统计工具实现了,完整代码如下:
#!/usr/bin/python
#-*- coding: utf-8 -*-
import os
result = {}
def static(path = '.'):
if os.path.isdir(path):
for x in os.listdir(path):
childdir = os.path.join(path, x)
if os.path.isdir(childdir):
static(childdir)
elif os.path.isfile(childdir):
clacFilelines(childdir)
elif os.path.isfile(path):
clacFilelines(path)
return
def clacFilelines(filepath): vpath = os.path.splitext(filepath) ext = vpath[1].lower() if not ext.strip(): return False if not isTextFile(ext): return False lines = 0 with open(filepath, 'rU') as f: filelist = f.readlines() for line in filelist: if not line.strip(): continue lines += 1 if ext in result: result[ext] += lines else: result[ext] = lines print 'file:%s lines:%d' %(filepath, lines) return True
def isTextFile(ext): tExt = ('.c', '.cpp', '.h', '.py', '.htm', '.html', '.txt', '.lua', '.ini', '.hpp', '.lua', '.cfg') if ext in tExt: return True return False
if __name__ == '__main__':
print '***********start code line static*************'
static()
print '****************static result*****************'
sum = 0
for k,v in result.iteritems():
sum += v
print '[%s]: %d lines' %(k, v)
print 'total: %d lines' %sum
print '******************static end******************'
运行结果:
***********start code line static************* file:.\class.py lines:118 file:.\hello.py lines:483 file:.\metaclass.py lines:72 file:.\process.py lines:28 file:.\static_code_line.py lines:50 ****************static result***************** [.py]: 751 lines total: 751 lines ******************static end****************** [Finished in 0.4s]
前后总共花了15min左右就完成了这个小程序,突然有点喜欢上python了。
相关文章推荐
- python实现代码行数统计示例分享
- python 统计代码行数,注释行数的简单实现
- 《Python Case系列》一.Python实现统计项目的代码行数
- 统计代码行数(python实现)
- python实现统计代码行数的方法
- python实现的代码行数统计(纯代码)
- Python脚本实现代码行数统计代码分享
- python实现代码行数统计示例分享
- python实现统计代码行数的方法
- 代码行数统计的Java和Python实现
- 代码行数统计(python实现)
- 代码行数统计(python实现)
- Python脚本实现代码行数统计代码分享
- 统计代码的行数 c实现
- Python Show-Me-the-Code 第 0007 题 统计代码行数(注释,空行,总行数)小程序
- [python]写一个统计代码行数的codeCounter 推荐
- Python-统计svn变更代码行数
- python代码统计大文本文件行数
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- 【Python】代码行数统计