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获取Linux系统的各种信息
Jul 10 Python
跟老齐学Python之从格式化表达式到方法
Sep 28 Python
使用Python抓取模板之家的CSS模板
Mar 16 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
python如何基于redis实现ip代理池
Jan 17 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
Python socket服务常用操作代码实例
Jun 22 Python
Python如何读取、写入JSON数据
Jul 28 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 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简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
Python3字符串学习教程
2015/08/20 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
golang/python实现归并排序实例代码
2020/08/30 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
Java软件工程师综合面试题笔试题
2013/09/08 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书