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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
python实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
利用Python如何批量更新服务器文件
Jul 29 Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
python装饰器常见使用方法分析
Jun 26 Python
简单了解Django应用app及分布式路由
Jul 24 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 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文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
python中pass语句用法实例分析
2015/04/30 Python
python找出完数的方法
2018/11/12 Python
python argparser的具体使用
2019/11/10 Python
python的range和linspace使用详解
2019/11/27 Python
Python 实现一个简单的web服务器
2021/01/03 Python
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
Linux机考试题
2015/10/16 面试题
童装店创业计划书
2014/01/09 职场文书
爱与责任演讲稿
2014/05/20 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
小升初自荐信范文
2015/03/05 职场文书
2015年底工作总结范文
2015/05/15 职场文书
导游词之日本富士山
2020/01/06 职场文书