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 相关文章推荐
python3实现短网址和数字相互转换的方法
Apr 28 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
python字符串替换第一个字符串的方法
Jun 26 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
python Shapely使用指南详解
Feb 18 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
大数据分析用java还是Python
Jul 06 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 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中的类型约束介绍
2015/05/11 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
简单谈谈json跨域
2016/03/13 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
小程序实现分类页
2019/07/12 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python中的Classes和Metaclasses详解
2015/04/02 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
python实现多张图片拼接成大图
2019/01/15 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
2020/08/05 Python
如何写好升职自荐信
2014/01/06 职场文书
社区工作感言
2014/02/21 职场文书
推荐信怎么写
2014/05/09 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书