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

关于python中屏蔽输出

python中屏蔽输出包含屏蔽标准输出(比如打印出来的内容)、屏蔽标准错误(错误信息)还有屏蔽logging信息等。

  • 屏蔽标准输出
import contextlib
import oswith open(os.devnull, "w") as devnull:with contextlib.redirect_stdout(devnull):print("Hello, World!")

运行上面的代码会发现,没有任何输出,因为`redirect_stdout`表示将标准输出的内容给定义到devnull去了,`os.devnull`是一个特殊的文件路径,在Unix-like系统上通常是`/dev/null`,在Windows上是`NUL`。它的作用是丢弃所有写入其中的数据。

  • 屏蔽标准错误

屏蔽标准错误只需要把上面代码中的`stdout`改成`stderr`就好了。

可以看到屏蔽标准错误不会屏蔽标准输出,但是屏蔽标准输出不是屏蔽异常,

异常该显示还显示,屏蔽异常的话,就目前我了解只有用try-except了。

上面的是正常的,将输出写到标准错误里是可以屏蔽的,但是好像很少有人会这么写吧。。。

而且`print("xxx" file=sys.stdout)`和`print("xxx", file=sys.stderr)`貌似没有什么区别,都将“xxx”打印到控制台,关于此,chatgpt是这样解释的

反正我是觉得这个屏蔽标准错误的用法有点子鸡肋。

  • 屏蔽logging信息

屏蔽logging也是很常用的,上面的方法对logging信息没有用,需要logging本身的设置

将logging的handler直接置空还是有logging信息被打印出来,原因是,代码中,即使你清除了 `logger.handlers` 列表,`logging `模块可能会自动添加一个默认的处理器来处理日志消息。默认情况下,日志消息等级为 `WARNING `及以上的消息会被显示在控制台上。这解释了为什么你仍然看到 `WARNING `及以上级别的消息。

如果要完全屏蔽到logging的信息,需要自己写个handler,加进去

这下啥都没有了。当然也可以在`emit`这个函数里面对record进行一些处理,其中record有哪些属性可用呢?这里给出一个可以查record属性的代码示例

import loggingclass NullHandler(logging.Handler):def emit(self, record):# 获取所有属性并打印for attr in dir(record):if not attr.startswith('__'):print(f'{attr}: {getattr(record, attr)}')passlogging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger()
logger.handlers = []
logger.addHandler(NullHandler())logger.debug("This debug message will be discarded.")

http://www.lryc.cn/news/355673.html

相关文章:

  • 螺旋矩阵(算法题)
  • ffmpeg-webrtc(metartc)给ffmpeg添加webrtc协议
  • C语言知识大纲
  • 【必会面试题】synchronized锁升级的过程
  • 设计模式——工厂三兄弟之简单工厂
  • 如何使用ChatGPT撰写短视频爆款文案
  • 申办风景园林设计乙级资质如何整理技术人员的专业培训证明
  • 类别型特征
  • java医院管理系统源码(springboot+vue+mysql)
  • vue2 面试题
  • 【JavaEE精炼宝库】多线程(3)线程安全 | synchronized
  • el-table-column两种方法处理特殊字段,插槽和函数
  • huggingface笔记: accelerate estimate-memory 命令
  • 李飞飞亲自撰文:大模型不存在主观感觉能力,多少亿参数都不行
  • 超级好用的C++实用库之套接字
  • C++ | Leetcode C++题解之第108题将有序数组转换为二叉搜索树
  • 5月27日,每日信息差
  • echart扩展插件词云echarts-wordcloud
  • 解决无法直接抓取链接地址
  • java面对对象编程-多态
  • 【Sql Server】随机查询一条表记录,并重重温回顾下自定义函数的封装和使用
  • 基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善
  • K8s证书过期处理
  • 刷题之路径总和Ⅲ(leetcode)
  • MongoDB 原子操作:确保数据一致性和完整性的关键
  • 2024上半年软考高级系统架构设计师回顾
  • SQL注入绕过技术深度解析与防御策略
  • Redis教程(十六):Redis的缓存穿透、缓存击穿、缓存雪崩
  • 如何实现一个高效的单向链表逆序输出?
  • 使用 Go 实现 HelloWorld 程序,并分析其结构