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 daemon守护进程实现
Aug 27 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
django框架自定义用户表操作示例
Aug 07 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
python元组和字典的内建函数实例详解
Oct 22 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
opencv+python实现均值滤波
Feb 19 Python
Python sqlite3查询操作过程解析
Feb 20 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
简述python&pytorch 随机种子的实现
Oct 07 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
初识Laravel
2014/10/30 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python入门篇之字典
2014/10/17 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
Python itertools.product方法代码实例
2020/03/27 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
学习新党章思想汇报
2014/01/09 职场文书
交通事故调解协议书
2014/04/16 职场文书
超市促销活动总结
2014/07/01 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
数学教师求职信范文
2015/03/20 职场文书
法制教育观后感
2015/06/17 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书