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使用reportlab画图示例(含中文汉字)
Dec 03 Python
Python中列表的一些基本操作知识汇总
May 20 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
Python基于dom操作xml数据的方法示例
May 12 Python
使用PyInstaller将python转成可执行文件exe笔记
May 26 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
python实现连续变量最优分箱详解--CART算法
Nov 22 Python
在Django下创建项目以及设置settings.py教程
Dec 03 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 Python
教你用Python matplotlib库制作简单的动画
Jun 11 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扩展开发经验分享
2012/09/06 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
javascript AutoScroller 函数类
2009/05/29 Javascript
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
解释&&和||在javascript中的另类用法
2014/07/28 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
jQuery treeview树形结构应用
2021/03/24 jQuery
2014教师研修学习体会
2014/07/08 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android