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) 关于我们应不应该继续学习python
Oct 24 Python
python进阶教程之文本文件的读取和写入
Aug 29 Python
Python3 正在毁灭 Python的原因分析
Nov 28 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
深入理解Python变量与常量
Jun 02 Python
python 表达式和语句及for、while循环练习实例
Jul 07 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python读取word文本操作详解
Jan 22 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
学习和使用python的13个理由
Jul 30 Python
Python基本语法之运算符功能与用法详解
Oct 22 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中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
js打造数组转json函数
2015/01/14 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Html5 localStorage入门教程
2018/04/26 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
传播学毕业生求职信
2013/10/11 职场文书
电子商务专业学生的自我鉴定
2013/11/28 职场文书
大学新生欢迎词
2014/01/10 职场文书
工程师岗位职责规定
2014/02/26 职场文书
小学生植树节活动总结
2014/07/04 职场文书
交通事故委托书范本
2014/09/28 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
公司搬迁通知
2015/04/20 职场文书
春节随笔
2015/08/15 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python