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判断两个对象相等的原理
Dec 12 Python
Python类的继承和多态代码详解
Dec 27 Python
django 解决manage.py migrate无效的问题
May 27 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
Python延时操作实现方法示例
Aug 14 Python
python实现简易动态时钟
Nov 19 Python
使用python3构建文件传输的方法
Feb 13 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
python之拟合的实现
Jul 19 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
May 23 Python
Python标准库pathlib操作目录和文件
Nov 20 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
Python读写ini文件的方法
2015/05/28 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
2015年助残日活动总结
2015/03/27 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js