Python 代码行数自动统计源码,python行数,Python 代码行数自


Python 代码行数自动统计源码,由编橙之家收集整理。

只用到了2个常用的Python标准库中的os和sys模块就解决了代码行数统计。

可能是因为这段时间在做的一个Python项目,用的是一个公司内部的IDE环境,而这个IDE环境产生的py代码并不是以文本方式存储,都是放在二进制文件里面的。

由于这门语言外界几乎接触不到,所以没有针对它的代码统计程序。一个模块完成后要统计代码行数会很困难的,要统计的话只能手工来操作,这不符合我们程序员的一惯风格。

在这期间我一直在关注python语言,但是还没有动手真正的写python程序 。今天就利用中午休息的时间写了一个简单的代码统计程序。对输入路径作递归查找代码文件,对每一个代码文件计算注释行数、空行数、真正的代码行数。

统计代码行数Python代码如下:

#coding=utf-8#iplaypython.pyimportsys;importos;classLineCount:deftrim(self,docstring):ifnotdocstring:return''lines=docstring.expandtabs().splitlines()indent=sys.maxintforlineinlines[1:]:stripped=line.lstrip()ifstripped:indent=min(indent,len(line)-len(stripped))trimmed=[lines[0].strip()]ifindent<sys.maxint:forlineinlines[1:]:trimmed.append(line[indent:].rstrip())whiletrimmedandnottrimmed[-1]:trimmed.pop()whiletrimmedandnottrimmed[0]:trimmed.pop(0)return'\n'.join(trimmed)defFileLineCount(self,filename):(filepath,tempfilename)=os.path.split(filename);(shotname,extension)=os.path.splitext(tempfilename);ifextension=='.txt'orextension=='.hol':#filetypefile=open(filename,'r');self.sourceFileCount+=1;allLines=file.readlines();file.close();lineCount=0;commentCount=0;blankCount=0;codeCount=0;foreachLineinallLines:ifeachLine!="":eachLine=eachLine.replace("","");#removespaceeachLine=self.trim(eachLine);#removetabIndentifeachLine.find('--')==0:#LINECOMMENTcommentCount+=1;else:ifeachLine=="":blankCount+=1;else:codeCount+=1;lineCount=lineCount+1;self.all+=lineCount;self.allComment+=commentCount;self.allBlank+=blankCount;self.allSource+=codeCount;printfilename;print'Total:',lineCount;print'Comment:',commentCount;print'Blank:',blankCount;print'Source:',codeCount;defCalulateCodeCount(self,filename):ifos.path.isdir(filename):ifnotfilename.endswith('\\'):filename+='\\';forfileinos.listdir(filename):ifos.path.isdir(filename+file):self.CalulateCodeCount(filename+file);else:self.FileLineCount(filename+file);else:self.FileLineCount(filename);#OpenFiledef__init__(self):self.all=0;self.allComment=0;self.allBlank=0;self.allSource=0;self.sourceFileCount=0;filename=raw_input('Enterfilename:');self.CalulateCodeCount(filename);ifself.sourceFileCount==0:print'NoCodeFile';pass;print'\n';print'*****************AllFiles**********************';print'Files:',self.sourceFileCount;print'Total:',self.all;print'Comment:',self.allComment;print'Blank:',self.allBlank;print'Source:',self.allSource;print'****************************************************';myLineCount=LineCount();

我们看到代码中 extension == '.txt' or extension == '.hol'这句代码是用来判定文件的后缀名,可以确定是否要计算代码行数。
if eachLine.find('--') == 0 :是用来判定当前行是不是单行注释,为了能在其他机器上运行,使用了py2exe来把python脚本生成可执行的exe。

from distutils.core import setupimport py2exesetup( version = "0.0.1", description = "LineCount", name = "LineCount", console = ["LineCount.py"], )

编橙之家文章,

评论关闭