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脚本
Feb 10 Python
Python中针对函数处理的特殊方法
Mar 06 Python
利用Python中的mock库对Python代码进行模拟测试
Apr 16 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
python数据类型_字符串常用操作(详解)
May 30 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
Python实现的自定义多线程多进程类示例
Mar 23 Python
使用TensorFlow实现二分类的方法示例
Feb 05 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
keras多显卡训练方式
Jun 10 Python
pytorch 计算ConvTranspose1d输出特征大小方式
Jun 23 Python
python 窃取摄像头照片的实现示例
Jan 08 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
如何开发一个虚拟域名系统
2006/10/09 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python实现测试磁盘性能的方法
2015/03/12 Python
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
python创建关联数组(字典)的方法
2015/05/04 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Python实现元素等待代码实例
2019/11/11 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
Python中过滤字符串列表的方法
2020/12/22 Python
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
公司企业表扬信
2014/01/11 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
四风问题查摆材料
2014/08/25 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
怒海潜将观后感
2015/06/11 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript