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实现百度关键词排名查询
Mar 30 Python
跟老齐学Python之总结参数的传递
Oct 10 Python
Python socket C/S结构的聊天室应用实现
Nov 30 Python
Python中的zip函数使用示例
Jan 29 Python
python实现类的静态变量用法实例
May 08 Python
Python自动扫雷实现方法
Jul 25 Python
python简单实现获取当前时间
Aug 27 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
python中的常量和变量代码详解
Jul 25 Python
python实现大文本文件分割
Jul 22 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 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开发框架myqee新手快速入门教程
2014/07/14 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
自己的js工具 Event封装
2009/08/21 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
一个简单的python程序实例(通讯录)
2013/11/29 Python
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
高三体育教学反思
2014/01/29 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
经销商年会策划方案
2014/05/29 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
青岛海底世界导游词
2015/02/11 职场文书
努力学习保证书
2015/02/26 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技