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 相关文章推荐
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
django model去掉unique_together报错的解决方案
Oct 18 Python
Python标准库06之子进程 (subprocess包) 详解
Dec 07 Python
python实现linux下抓包并存库功能
Jul 18 Python
Python实现八皇后问题示例代码
Dec 09 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
Pyqt5自适应布局实例
Dec 13 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
python dir函数快速掌握用法技巧
Dec 09 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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
虫族 Zerg 历史背景
2020/03/14 星际争霸
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
vue项目中添加单元测试的方法
2018/07/21 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
python中查看变量内存地址的方法
2015/05/05 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Python实现AI换脸功能
2020/04/10 Python
python能在浏览器能运行吗
2020/06/17 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
基于opencv实现简单画板功能
2020/08/02 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
计算机个人求职信范例
2014/01/24 职场文书
测量工程专业求职信
2014/02/24 职场文书
2014年团支部工作总结
2014/11/17 职场文书
个人事迹材料范文
2014/12/29 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
初中英语教学反思范文
2016/02/15 职场文书
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android