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 16 Python
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
Python中如何获取类属性的列表
Dec 26 Python
pycharm安装图文教程
May 02 Python
Python进阶之尾递归的用法实例
Jan 31 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
Python之修改图片像素值的方法
Jul 03 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
python+OpenCV实现车牌号码识别
Nov 08 Python
python 读取更新中的log 或其它文本方式
Dec 24 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 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基础知识:控制结构
2006/12/13 PHP
php创建多级目录代码
2008/06/05 PHP
php UTF-8、Unicode和BOM问题
2010/05/18 PHP
php强制运行广告的方法
2014/12/01 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
react-native封装插件swiper的使用方法
2018/03/20 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
python的id()函数介绍
2013/02/10 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
python面试题小结附答案实例代码
2019/04/11 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
标准自荐信范文
2014/01/29 职场文书
财务个人年度总结范文
2015/02/26 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA