0901python打印异常信息

news2024/11/15 17:37:57

python异常处理

    • 1.目的
    • 2.python异常处理办法
      • 2.1直接打印异常信息
      • 2.2打印异常具体位置
    • 3.日志处理
      • 3.1代码
    • 4.结果输出

1.目的

在java中,我们经常会有统一异常处理以及日志打印模块,同样,python也是,在yolo中很多位置就是用到了这个,比如校验图片的尺寸,后缀名,设备状态等等…

2.python异常处理办法

2.1直接打印异常信息

except中直接print

2.2打印异常具体位置

traceback.print_exec()
在这里插入图片描述

3.日志处理

在这里插入图片描述

3.1代码

"""
@Time    : 2024/9/1 上午8:52
@Author  : chensong
@File    : 1.python异常处理以及日志打印.py
@Desc    : 
"""
import logging
import sys
import traceback
import warnings

import cv2


class customerHandler(logging.FileHandler):
    # mode: a:追加 w:覆盖
    def __init__(self, filename,mode='a',encoding=None,delay=False):
        super().__init__(filename,mode,encoding,delay)
#      在此处重写原有方法,比如改变日志记录的格式或者行为
    def emit(self, record):
        print('重写了FileHandler类')
        formatted_record = self.format(record)
        with open(self.baseFilename,'a') as log_file:
            log_file.write(formatted_record +'\n')
        
if __name__ == '__main__':
    # 定义一个logger
    # 形参为一个str,指定logger名称,不指定则代表是根logger
    mylogger = logging.getLogger('mylogger')
    # 设置日志级别,debug属于最低级别日志,所以所有的日志信息都将被打印
    mylogger.setLevel(logging.DEBUG)
    # 定义不同的handler可以将日志输出到不同的地方
    # filehandler,streamhandler,sockethandler,smpthandler
    # 下方的handler是将日志输出到控制台
    myHandler = customerHandler('my_logFile.log')
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    myHandler.setFormatter(formatter)
    mylogger.addHandler(myHandler)
    
    mylogger.info('这是自定义的handler处理日志信息')
    
    # 2.定义第二个handler
    logger2 = logging.getLogger('secondLogger')
    streamHandler = logging.StreamHandler()
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    streamHandler.setFormatter(formatter)
    logger2.addHandler(streamHandler)
    try:
        # a = 1/0
        warnings.warn('a',DeprecationWarning)
        with warnings.catch_warnings():
          mylogger.warning('a')
        cv2.imshow('www')
    except Exception as e:
        # 只有error才会到达这里
        traceback.print_exc()
        print('开始打印异常原因')
        # 记录异常及其级别
        exc_info = sys.exc_info()
        # 到达这里就会出现错误
        mylogger.error(exc_info)
       
        # 使用完以后移除对应handler
        mylogger.removeHandler(myHandler)
        logger2.removeHandler(streamHandler)

4.结果输出

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果笔记本电脑能不能玩游戏?苹果电脑玩游戏咋样?

过去Mac玩不了游戏最大的问题,就是图形API自成一体,苹果既不支持微软的DirectX,同时为了推广自家的Metal图形API,又对OpenGL和Vulkan两大主流的通用API敬而远之。游戏生态、硬件瓶颈让苹果电脑不适合玩游戏。 不过说到底&#xf…

C++ 设计模式——备忘录模式

C 设计模式——备忘录模式 C 设计模式——备忘录模式1. 主要组成成分2. 逐步构建备忘录模式步骤1: 创建备忘录步骤2: 实现原发器步骤3: 创建管理者(负责人)类步骤4: 客户端使用 3. 备忘录模式 UML 图UML 图解析 4. 备忘录模式的优点5. 备忘录模式的缺点6…

(1)冒泡排序和其优化

一 冒泡排序 1.1 冒泡排序概念 冒泡排序(Bubble Sort)是一种交换排序,基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录位置。 假设要对无序数列{2,3,4,5,6,7,8,1}排序:…

从一到无穷大 #34 从Columnar Storage Formats评估到时序存储格式的设计权衡

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言Parquet / ORC功能与结构对比差异Indexes and Filters压缩影响 TsFile总结 引言 …

使用 Milvus Lite、Llama3 和 LlamaIndex 搭建 RAG 应用

大语言模型(LLM)已经展示出与人类交互并生成文本响应的卓越能力。这些模型可以执行各种自然语言任务,如翻译、概括、代码生成和信息检索等。 为完成这些任务,LLM 需要基于海量数据进行预训练。在这个过程中,LLM 基于给…

捷达千里江山首发亮相,捷达品牌2024成都车展继续宠粉不停

2024年8月30日,捷达品牌携新车捷达千里江山惊艳亮相2024成都国际车展,并在五周年之际,发布幸福包油计划等宠粉福利,号召用户打卡千里江山,奔赴美好。与此同时,全新捷达VS5/VS7五周年纪念版车型进一步降低了…

基于Java+SpringBoot+Vue的汽车销售网站

基于JavaSpringBootVue的汽车销售网站 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 某信 gzh 搜索【智能编程小助手】获取项…

Kevin‘s notes about Qt---Episode 3 在界面中修改程序参数Demo

Demo 效果 实现一个加法器,在输入框中分别填入a和b的值,点击“calculate”按钮,在sum处显示a+b的结果。 整体结构 我自己先写了一个模板用于测试从文本框获取输入数据,整个工程的结构如下: 说明: func_myself.h和func_myself.cpp是我自己创建的头文件和源文件,用于定…

江协科技stm32————11-2 W25Q64简介

W25Q64简介 存储容量(24位地址)在分配地址时需要3个字节,最多16MByte 硬件电路 HOLD:相当于SPI进了一次中断,保持原来的数据 括号内的IO0、IO1……用于双重和四重SPI 框图 右上角首先将8Mb的存储空间以64kb的大小分为…

创新大赛决赛:如何让你的项目更上一层楼?

创新大赛决赛:如何让你的项目更上一层楼? 前言突出项目的核心价值指导老师的辅导作用制作优秀的PPT演讲和答辩的准备利用数据和案例增强说服力模拟答辩的重要性总结结语 前言 在当今这个快速变化的时代,创新不仅是推动社会进步的动力&#xf…

R语言 | 文件读取

一、文件读取 -scan()函数 scan(file “”, what double(), nmax -1, n -1, sep “ ”),file" " 的双引号里写文件地址,what写读入的数据类型,如果文件有好几种类型,可以啥也不写(what" "&…

数据结构与算法——Java实现 3.二分查找——Java版

放下不切实际的幻想,放下无法更改的过去,行云流水,任其行之 —— 24.8.31 一、二分查找——Java基础版 Java中的API——Arrays.binarySearch(数组,目标值) 返回的结果是插入点的位置 若在目标数组中找不到元素,则返…

折叠cell的学习

折叠cell 文章目录 折叠cell前言示例代码部分实现思路核心内容 前言 笔者在暑假的3GShare的项目中就写了有关折叠cell的内容,这里笔者重新讲一下相关内容。 示例 这里先给出效果图,这里是我们的折叠cell的最后的实现效果,下面来讲解一下相关代…

linux 云主机 pip 安装配置 letsencrypt certbot 为多个域名生成免费 https 证书实录

本文记录了我在华为云 EulerOS linux 云主机使用 python pip 方式安装配置 Let’s Encrypt certbot, 并为我的网站的多个域名生成免费 https 证书的整个过程, 包括 python 环境配置, 下载 certbot 及 certbot-nginx, 一次性生成多个域名的证书及注意事项, 以及最后配置 certbot…

k3s中使用GPU资源

前提是已经安装了nvidia驱动 一、安装nvidia-container-toolkit(推荐) #复制一份docker配置文件,以防被覆盖 cp /etc/docker/daemon.json /etc/docker/daemon.json.bak #安装NVIDIA Container Toolkitapt-get install nvidia-container-toolkit二、配置…

Python 数据分析笔记— Numpy 基本操作(上)

文章目录 学习内容:一、什么是数组、矩阵二、创建与访问数组三、矩阵基本操作 学习内容: 一、什么是数组、矩阵 数组(Array):是有序的元素序列,可以是一维、二维、多维。 array1 [1,2,3] 或[a, b, c, d…

如何通过住宅代理进行高效SSL检查

引言 什么是SSL检查?有哪些内容? 为什么要使用SSL检查? SSL检查是如何进行的? 总结 引言 在现代互联网环境中,SSL/TLS协议已成为确保网络通信安全的基石。随着网络攻击手段的不断演进,仅仅依赖于基础的…

[Leetcode 47][Medium]-全排列 II-回溯(全排列问题)

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 和上一道Leetcode46相比,有变化的地方是要排除重复组合的情况。那么在组合问题中去除重复组合的方法是先对数组进行排序,然后在回溯函数中判断当前元素与上一个元素是否相同,若相同…

Kotaemon:开源的RAG UI

检索增强生成 (RAG) 已成为一种改变游戏规则的方法,可增强大型语言模型的功能。Kotaemon 是由 Cinnamon 开发的开源项目,它站在这项创新的最前沿,提供了一个简洁、可定制且功能丰富的基于 RAG 的用户界面,用于与文档聊天。 Kotae…

【再回顾面向对象】,关键字Satic、final

再回顾面对对象 object:所有类的祖先,所有类的方法 GC:垃圾回收站 一般不会回收对象——Car c new Car(); toString() Hashchde要跟地址对应 尽量不要自己产生跟指针不一样,指针是直接指向地址像是数组的索引找的时候可能会有…