当前位置: 首页 > news >正文

0901python打印异常信息

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 warningsimport cv2class 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名称,不指定则代表是根loggermylogger = 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.定义第二个handlerlogger2 = 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/0warnings.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)# 使用完以后移除对应handlermylogger.removeHandler(myHandler)logger2.removeHandler(streamHandler)

4.结果输出

在这里插入图片描述


http://www.mrgr.cn/news/16951.html

相关文章:

  • iOS面试:在block内如何修改block外部变量?
  • 火绒安全与国际对手:全面对比与分析
  • PCL 基于八叉树的曲率下采样
  • asio之带缓冲区的流
  • OpenIPC开源IPC之重要源码包
  • 常使用的前端构建优化策略
  • 2024年Linux内核社区关于large folio的关键进展
  • PCL-直通滤波
  • 617. 合并二叉树
  • 【AI 绘画】更快?更省显存?支持 FLUX?使用绘世启动器安装 SD WebUI Forge
  • 【王树森】Few-Shot Learning小样本学习 (1/3): 基本概念(个人向笔记)
  • AutoGen 检索增强生成(RAG)功能解析
  • 拥抱开源拥护国产|暴雨打造最强AI的服务器操作系统!
  • 前端进阶| 深入学习面向对象设计原则
  • Oracle(98)如何启用审计?
  • 结构化数据、半结构化数据、非结构化数据
  • 30Kg载重1小时长续航油电混动无人机技术详解
  • 部署project_exam_system项目——及容器的编排
  • 客户端、APP、Desktop和H5的区别
  • 【深度遍历】【排列组合】【力扣】有重复字符串的排列组合