Python实现代码统计工具


Posted in Python onSeptember 19, 2019

本文实例为大家分享了Python实现代码统计工具的具体代码,供大家参考,具体内容如下

思路:首先获取所有文件,然后统计每个文件中代码的行数,最后将行数相加.

实现的功能:

统计每个文件的行数;

统计总行数;

支持指定统计文件类型,排除不想统计的文件类型;

排除空行;

排除注释行

import os
import sys
import os.path
#for i in sys.argv:
# print (i)

# 判断单个文件的代码行数
def count_file_lines(file_path):
 line_count = 0
 flag=True
 try:
 fp = open(file_path,"r",encoding="utf-8")
 encoding_type="utf-8"
 fp.close()
 except:
 encoding_type="gbk"
 with open(file_path,"r",encoding=encoding_type) as fp:
 for line in fp:
 #print (line_count)
  if line.strip()=="":
  continue
  else:
  if line.strip().endswith("'''") and flag == False:
   flag=True
   continue
  if line.strip().endswith('"""') and flag == False:
   flag=True
   continue
  if flag == False:
   continue
  if line.strip().startswith("#encoding") or line.strip().startswith("#-*-"):
   line_count += 1
  #elif line.strip().startswith('"""') and line.strip().endswith('"""') and line.strip()!='"""':
 #continue
  #elif line.strip().startswith("'''") and line.strip().endswith("'''") and line.strip()!="'''":
 #continue
  elif line.strip().startswith('#'):
   continue
  elif line.strip().startswith("'''") and flag == True:
   flag = False
   continue
  elif line.strip().startswith('"""') and flag == True:
   flag = False
   continue
  else:
   line_count += 1
 return line_count

def count_code_lines(path,file_types=[]):
 # 判断路径是否存在
 if not os.path.exists(path):
 print("您输入的目录或文件路径不存在")
 return 0

 line_count=0 #代码行总数
 file_lines_dict={} #每个文件代码行数

 # 判断是否为文件
 if os.path.isfile(path):
 file_type = os.path.splitext(path)[1][1:] #取到文件后缀名

 # 判断文件类型是否满足条件
 if len(file_types)==0:
 file_types=["py","cpp","c","java","ruby","ini","go","html","css","js","txt","vbs","php","asp","sh"]
 if file_type in file_types:
 line_count = count_file_lines(path)
 return line_count
 else:
 file_path = []
 for root, dirs, files in os.walk(path):
  for file in files:
  file_path.append(os.path.join(root,file))
  for f in file_path:
   file_type = os.path.splitext(f)[1][1:]
   if len(file_types)==0:
   file_types=

["py","cpp","c","java","ruby","ini","go","html","css","js","txt","vbs","php","asp","sh"]
   if file_type not in file_types:
   continue
   line_num = count_file_lines(f)
   line_count += line_num
   file_lines_dict[f] = line_num
  return line_count,file_lines_dict
 

if __name__=="__main__":
 print (sys.argv)
 if len(sys.argv) < 2:
 print ("请输入待统计行数的代码绝对路径!")
 sys.exit()
 count_path = sys.argv[1]
 file_types = []
 if len(sys.argv) >2:
 for i in sys.argv[2:]:
  file_types.append(i)

#print(count_path,file_types)
print(count_code_lines(count_path,file_types))
#print(count_file_lines("b.py"))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python操作json数据的一个简单例子
Apr 17 Python
python元组操作实例解析
Sep 23 Python
python中列表元素连接方法join用法实例
Apr 07 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
python 队列详解及实例代码
Oct 18 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
python制作朋友圈九宫格图片
Nov 03 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
python中的被动信息搜集
Apr 29 Python
python爬取某网站原图作为壁纸
Jun 02 Python
python实现统计代码行数的小工具
Sep 19 #Python
python日志模块logbook使用方法
Sep 19 #Python
python统计指定目录内文件的代码行数
Sep 19 #Python
python如何从文件读取数据及解析
Sep 19 #Python
python实现代码统计器
Sep 19 #Python
python实现代码统计程序
Sep 19 #Python
python tkinter图形界面代码统计工具(更新)
Sep 18 #Python
You might like
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
动态样式类封装JS代码
2009/09/02 Javascript
js常用代码段收集
2011/10/28 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
python实现通过shelve修改对象实例
2014/09/26 Python
Python中的rjust()方法使用详解
2015/05/19 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
汽车专业人才自我鉴定范文
2013/12/29 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
企业军训感言
2014/02/08 职场文书
个人自我鉴定总结
2014/03/25 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
初中美术教学反思
2016/02/17 职场文书