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 Django(图文)
Nov 04 Python
Python求两个list的差集、交集与并集的方法
Nov 01 Python
详细解读Python中的__init__()方法
May 02 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
python实现简单遗传算法
Mar 19 Python
Python面向对象程序设计示例小结
Jan 30 Python
python pygame实现五子棋小游戏
Oct 26 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
Python简易开发之制作计算器
Apr 28 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+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
Python实现去除代码前行号的方法
2015/03/10 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
python图像处理之反色实现方法
2015/05/30 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
python中的django是做什么的
2020/07/31 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
绩效管理实施方案
2014/03/19 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
员工自我工作评价
2015/03/06 职场文书
Golang数据类型和相互转换
2022/04/12 Golang
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL