python3使用GUI统计代码量


Posted in Python onSeptember 18, 2019

本文实例为大家分享了python3使用GUI统计代码量的具体代码,供大家参考,具体内容如下

# coding=utf-8
'''
选择一个路径
遍历路径下的每一个文件,统计代码量
字典存储 每一种类型文件的代码行数,eg: *.py -> 行数
全局变量 总行数

需要注意的是,这里仅仅能打开utf-8编码的文件,其他类型的文件无法打开,会出现解码错误
解决方法:使用try-except语句,遇到解码错误就跳过,即 except UnicodeDecodeError:
'''
import easygui as g
import sys
import os

# 全局变量 总行数
total_line_num = 0
# 字典存储 每一种类型文件的代码行数,eg: *.py -> 行数
code_file_dict = {}


def func1(file_path):
  if os.path.isdir(file_path):
    file_list = os.listdir(file_path) # 列出当前路径下的全部内容
    for each in file_list:
      path_plus = file_path + os.sep + each
      if os.path.isdir(path_plus):
        if os.path.basename(path_plus) in [
            'venv', '.idea']: # 如果目录为venv或者.idea,则跳过,不统计
          pass
        else:
          func1(path_plus)
      elif os.path.isfile(path_plus):
        try:
          with open(path_plus, 'r') as f:
            # 每个文件的代码行数
            line_num = 0
            for eachline in f:
              global total_line_num # 声明全局变量
              total_line_num += 1
              line_num += 1
            '''
            将each分割出后缀名,存储在字典中
            '''
            (temp_path, temp_name) = os.path.basename(each).split('.')
            temp = '.' + temp_name
            global code_file_dict
            if temp not in code_file_dict:
              code_file_dict[temp] = line_num
            else:
              code_file_dict[temp] += line_num
        except UnicodeDecodeError:
          pass
  else:
    g.msgbox('该路径只是一个文件', '提示')
    sys.exit(0)


if __name__ == '__main__':
  try:
    dir = g.diropenbox('请选择的你的代码库', '浏览文件夹', default='.')
    func1(dir)
    print(code_file_dict)
    g.textbox(
      '总行数为:{}\n已经完成了{}%\n离十万行代码还差{}行'.format(
        total_line_num,
        (total_line_num / 100000) * 100,
        100000 - total_line_num),
      title='统计结果',
      text=[
        '{a}类型的代码有{b}行\n'.format(a=k,b=v) for k,v in code_file_dict.items()],
      codebox=1)
  except TypeError as reason:
    g.msgbox('取消了统计代码行操作')

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

Python 相关文章推荐
python实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
简单实现python画圆功能
Jan 25 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
python之生成多层json结构的实现
Feb 27 Python
Python selenium抓取虎牙短视频代码实例
Mar 02 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
Python WSGI 规范简介
Apr 11 Python
python之基数排序的实现
Jul 26 Python
django中的图片验证码功能
Sep 18 #Python
python tkinter图形界面代码统计工具
Sep 18 #Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 #Python
Python 元组操作总结
Sep 18 #Python
python sorted函数的小练习及解答
Sep 18 #Python
python 默认参数相关知识详解
Sep 18 #Python
python连接PostgreSQL数据库的过程详解
Sep 18 #Python
You might like
php 页面执行时间计算代码
2008/12/04 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
php中opendir函数用法实例
2014/11/15 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
Javascript 实用小技巧
2010/04/07 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
js实现简易计算器功能
2019/10/18 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
应聘收银员个人的求职信
2013/11/30 职场文书
法人委托书范本
2014/04/04 职场文书
临时租车协议范本
2014/09/23 职场文书
绵山导游词
2015/02/05 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫