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实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
Python lambda函数基本用法实例分析
Mar 16 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
May 21 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
详解Python学习之安装pandas
Apr 16 Python
Python基础知识点 初识Python.md
May 14 Python
python全局变量引用与修改过程解析
Jan 07 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
python如何正确使用yield
May 21 Python
Python实现随机生成迷宫并自动寻路
Jun 13 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
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
python网络编程示例(客户端与服务端)
2014/04/24 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
浅谈python可视化包Bokeh
2018/02/07 Python
基于Python List的赋值方法
2018/06/23 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
python高级特性简介
2020/08/13 Python
python 常见的反爬虫策略
2020/09/27 Python
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
院药学专业个人求职信
2013/09/21 职场文书
大学自荐信
2013/12/12 职场文书
房地产还款计划书
2014/01/10 职场文书
市场营销毕业求职信
2014/08/07 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
详解python的内存分配机制
2021/05/10 Python
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
Python 图片添加美颜效果
2022/04/28 Python