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 相关文章推荐
python实现带声音的摩斯码翻译实现方法
May 20 Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
tensorflow识别自己手写数字
Mar 14 Python
如何实现删除numpy.array中的行或列
May 08 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
python关于矩阵重复赋值覆盖问题的解决方法
Jul 19 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 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+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
php创建图像具体步骤
2017/03/13 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
原生JS轮播图插件
2017/02/09 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
获取python的list中含有重复值的index方法
2018/06/27 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
自考毕业生自我鉴定
2013/11/04 职场文书
中央空调节能方案
2014/06/15 职场文书
组织生活会发言材料
2014/12/15 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python