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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
用Python解析XML的几种常见方法的介绍
Apr 09 Python
复习Python中的字符串知识点
Apr 14 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 Python
Django中Forms的使用代码解析
Feb 10 Python
django DRF图片路径问题的解决方法
Sep 10 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
Django 实现图片上传和下载功能
Dec 31 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通用防注入程序 推荐
2011/02/26 PHP
简单实现PHP留言板功能
2016/12/21 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
javascript的内存管理详解
2013/08/07 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
vue脚手架中配置Sass的方法
2018/01/04 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
详解Python装饰器由浅入深
2016/12/09 Python
Python装饰器原理与用法分析
2018/04/30 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
python如何进行矩阵运算
2020/06/05 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
Linux如何为某个操作添加别名
2015/02/05 面试题
JS原生实现轮播图的几种方法
2021/03/23 Javascript
关于环保的演讲稿
2014/05/10 职场文书
2014年除四害工作总结
2014/12/06 职场文书
经理岗位职责范本
2015/04/15 职场文书
小王子读书笔记
2015/06/29 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
Python django中如何使用restful框架
2021/06/23 Python
PyMongo 查询数据的实现
2021/06/28 Python
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python