python实现统计代码行数的方法


Posted in Python onMay 22, 2015

本文实例讲述了python实现统计代码行数的方法。分享给大家供大家参考。具体实现方法如下:

'''
Author: liupengfei
Function: count lines of code in a folder iteratively
Shell-format: cmd [dir]
Attention: default file encode is utf8 and default file type is java-source-file. But users can customize this script by just modifing global variables.
'''
import sys
import os
import codecs
from _pyio import open
totalCount = 0;
fileType = '.java'
descLineBegin = '//'
descBlockBegin = r'/**'
descBlockEnd = r'*/'
fileEncode = 'utf-8'
def main():
  DIR = os.getcwd()
  if len(sys.argv) >= 2:
    DIR = sys.argv[1]
  if os.path.exists(DIR) and os.path.isdir(DIR):
    print('target directory is %s' % DIR)
    countDir(DIR)
    print('total code line is %d' % totalCount)
  else:
    print('target should be a directory!')
def isFileType(file):
  return len(fileType) + file.find(fileType) == len(file)
def countDir(DIR):
  for file in os.listdir(DIR):
    absPath = DIR + os.path.sep + file;
    if os.path.exists(absPath):
      if os.path.isdir(absPath):
        countDir(absPath)
      elif isFileType(absPath):
        try:
          countFile(absPath)
        except UnicodeDecodeError:
          print(
            '''encode of %s is different, which
is not supported in this version!'''
            )
def countFile(file):
  global totalCount
  localCount = 0
  isInBlockNow = False
  f = codecs.open(file, 'r', fileEncode);
  for line in f:
    if (not isInBlockNow) and line.find(descLineBegin) == 0:
      pass;
    elif (not isInBlockNow) and line.find(descBlockBegin) >= 0:
      if line.find(descBlockBegin) > 0:
        localCount += 1
      isInBlockNow = True;
    elif isInBlockNow and line.find(descBlockEnd) >= 0:
      if line.find(descBlockEnd) + len(descBlockEnd) < len(line):
        localCount += 1
      isInBlockNow = False;
    elif (not isInBlockNow) and len(line.replace('\\s+', '')) > 0:
      localCount += 1
  f.close()
  totalCount += localCount
  print('%s : %d' % (file, localCount))
if __name__ == '__main__':
  main();

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
Python zip()函数用法实例分析
Mar 17 Python
python简单实现AES加密和解密
Mar 28 Python
如何基于python实现不邻接植花
May 01 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
python中id函数运行方式
Jul 03 Python
Python实现数字的格式化输出
Aug 01 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 Python
python 如何在测试中使用 Mock
Mar 01 Python
python flask框架快速入门
May 14 Python
python 详解turtle画爱心代码
Feb 15 Python
在Python中处理日期和时间的基本知识点整理汇总
May 22 #Python
python使用PIL模块实现给图片打水印的方法
May 22 #Python
python实现读取命令行参数的方法
May 22 #Python
Python中返回字典键的值的values()方法使用
May 22 #Python
python复制文件的方法实例详解
May 22 #Python
在Python中操作字典之update()方法的使用
May 22 #Python
python判断图片宽度和高度后删除图片的方法
May 22 #Python
You might like
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
php新建文件自动编号的思路与实现
2011/06/27 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
js实现抽奖效果
2017/03/27 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
口头翻译求职人自荐信
2013/12/07 职场文书
招聘单位介绍信
2014/01/14 职场文书
医院辞职信范文
2014/01/17 职场文书
高考备战决心书
2014/03/11 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
领导班子四风表现材料
2014/08/23 职场文书
公司股东合作协议书
2014/09/14 职场文书
小学美术教学反思
2016/02/17 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python