Python脚本文件LineCount.py的相关代码介绍

Python脚本文件LineCount.py在实际运行的过程中会有很多简捷的技巧可供我们大家借鉴,我们可以将其使用在python脚本文件中,既Python脚本文件LineCount.py,如果你对Python脚本文件感兴趣的话,你就可以点击以下的文章。

成都创新互联公司专注于企业网络营销推广、网站重做改版、渭滨网站定制设计、自适应品牌网站建设、成都h5网站建设商城网站制作、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为渭滨等各大城市提供网站开发制作服务。

因为最近在作的项目很特殊,所使用的语言是一个公司内部的IDE环境,而这个IDE所产生的代码并不是以文本方式存放的,都是放在二进制文件中,而且由于这门语言外界几乎接触不到,所以没有针对它的代码统计程序,当一个模块完成后要统计代码行数会很困难,要统计的话必须先把代码编辑器中的内容拷贝到一个文本类型的文件中。

正好一直在关注python,还没有用python写过程序,今天就利用中午休息的时间写了一个简单的代码统计程序。对输入的路径作递归,查找代码文件,对每一个代码文件计算它的注释行数,空行数,真正的代码行数。自己用的程序,就写的粗糙了,也没加异常处理。

主要的Python脚本文件LineCount.py的内容如下:

 
 
 
  1. import sys;
  2. import os;
  3. class LineCount:
  4. def trim(self,docstring):
  5. if not docstring:
  6. return ''
  7. lines = docstring.expandtabs().splitlines()
  8. indent = sys.maxint
  9. for line in lines[1:]:
  10. stripped = line.lstrip()
  11. if stripped:
  12. indent = min(indent, len(line) - len(stripped))
  13. trimmed = [lines[0].strip()]
  14. if indent < sys.maxint:
  15. for line in lines[1:]:
  16. trimmed.append(line[indent:].rstrip())
  17. while trimmed and not trimmed[-1]:
  18. trimmed.pop()
  19. while trimmed and not trimmed[0]:
  20. trimmed.pop(0)
  21. return '\n'.join(trimmed)
  22. def FileLineCount(self,filename):
  23. (filepath,tempfilename) = os.path.split(filename);
  24. (shotname,extension) = os.path.splitext(tempfilename);
  25. if extension == '.txt' or extension == '.hol' : # file type 
  26. file = open(filename,'r');
  27. self.sourceFileCount += 1;
  28. allLines = file.readlines();
  29. file.close();
  30. lineCount =0;
  31. commentCount = 0;
  32. blankCount = 0;
  33. codeCount = 0;
  34. for eachLine in allLines:
  35. if eachLine != " " :
  36. eachLineeachLine = eachLine.replace(" ",""); #remove space
  37. eachLine = self.trim(eachLine); #remove tabIndent
  38. if eachLine.find('--') == 0 : #LINECOMMENT 
  39. commentCount += 1;
  40. else :
  41. if eachLine == "":
  42. blankCount += 1;
  43. else :
  44. codeCount += 1;
  45. lineCountlineCount = lineCount + 1;
  46. self.all += lineCount;
  47. self.allComment += commentCount;
  48. self.allBlank += blankCount;
  49. self.allSource += codeCount;
  50. print filename;
  51. print ' Total :',lineCount ;
  52. print ' Comment :',commentCount;
  53. print ' Blank :',blankCount;
  54. print ' Source :',codeCount;
  55. def CalulateCodeCount(self,filename):
  56. if os.path.isdir(filename) :
  57. if not filename.endswith('\\'):
  58. filename += '\\'; 
  59. for file in os.listdir(filename):
  60. if os.path.isdir(filename + file):
  61. self.CalulateCodeCount(filename + file);
  62. else:
  63. self.FileLineCount(filename + file);
  64. else:
  65. self.FileLineCount(filename);
  66. # Open File
  67. def __init__(self):
  68. self.all = 0;
  69. self.allComment =0;
  70. self.allBlank = 0;
  71. self.allSource = 0;
  72. self.sourceFileCount = 0;
  73. filename = raw_input('Enter file name: ');
  74. self.CalulateCodeCount(filename);
  75. if self.sourceFileCount == 0 :
  76. print 'No Code File';
  77. pass;
  78. print '\n';
  79. print '***************** All Files **********************';
  80. print ' Files :',self.sourceFileCount;
  81. print ' Total :',self.all;
  82. print ' Comment :',self.allComment;
  83. print ' Blank :',self.allBlank;
  84. print ' Source :',self.allSource;
  85. print '****************************************************';
  86. myLineCount = LineCount();

可以看到extension == '.txt' or extension == '.hol'这句是判断文件的后缀,来确定是否要计算代码行数。if eachLine.find('--') == 0 :这句来判断当前行是不是单行注释(我们的这门语言不支持块注释)以上就是对Python脚本文件LineCount.py的相关代码的介绍。为了能在其他机器上运行,使用了py2exe来把python脚本生成可执行的exe,setup.py脚本内容如下:

 
 
 
  1. from distutils.core import setup
  2. import py2exe
  3. setup(
  4. version = "0.0.1",
  5. description = "LineCount",
  6. name = "LineCount",
  7. console = ["LineCount.py"],
  8. )  

不过生成exe后程序臃肿很多,有3M多。感觉使用python确实是件很惬意的事。 以上的文章就是对python写的代码行数统计程序的相关内容的介绍。

网站名称:Python脚本文件LineCount.py的相关代码介绍
分享链接:http://www.shufengxianlan.com/qtweb/news33/244233.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联