python中屏蔽输出示例详解

 更新时间:2024年05月29日 14:49:41   作者:JHW5981  
python中屏蔽输出包含屏蔽标准输出(比如打印出来的内容)、屏蔽标准错误(错误信息)还有屏蔽logging信息等,这篇文章主要介绍了python中屏蔽输出,需要的朋友可以参考下

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

屏蔽标准输出

import contextlib
import os
with 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 logging
class NullHandler(logging.Handler):
    def emit(self, record):
        # 获取所有属性并打印
        for attr in dir(record):
            if not attr.startswith('__'):
                print(f'{attr}: {getattr(record, attr)}')
        pass
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger()
logger.handlers = []
logger.addHandler(NullHandler())
logger.debug("This debug message will be discarded.")

到此这篇关于python中屏蔽输出的文章就介绍到这了,更多相关python屏蔽输出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • peewee创建连接前的前置操作wireshark抓包实现

    peewee创建连接前的前置操作wireshark抓包实现

    这篇文章主要为大家介绍了peewee创建连接前的前置操作wireshark 抓包实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • flask库中sessions.py的使用小结

    flask库中sessions.py的使用小结

    在Flask中Session是一种用于在不同请求之间存储用户数据的机制,Session默认是基于客户端Cookie的,但数据会经过加密签名,防止篡改,下面就来具体介绍一下如何使用
    2025-07-07
  • python中时间模块的基本使用教程

    python中时间模块的基本使用教程

    这篇文章主要给大家介绍了关于python中时间模块的基本使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 使用用Pyspark和GraphX实现解析复杂网络数据

    使用用Pyspark和GraphX实现解析复杂网络数据

    GraphX是Spark提供的图计算API,它提供了一套强大的工具,这篇文章将详细为大家介绍如何在Python / pyspark环境中使用graphx进行图计算,感兴趣的可以了解下
    2024-01-01
  • python将字符串列表转换为数值列表的几种方法

    python将字符串列表转换为数值列表的几种方法

    这篇文章主要介绍了python将字符串列表转换为数值列表的几种方法,包括使用map()和float()/int()、列表推导式、pandas库以及numpy库,每种方法都有其适用场景,如小型列表、灵活转换、处理复杂数据集和大规模数据计算等,需要的朋友可以参考下
    2025-04-04
  • Pycharm远程连接服务器跑代码的实现

    Pycharm远程连接服务器跑代码的实现

    本文主要介绍了Pycharm远程连接服务器跑代码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • python中的与时间相关的模块应用场景分析

    python中的与时间相关的模块应用场景分析

    本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateutil`,并详细阐述了每个模块的主要功能和使用方法,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2024-12-12
  • 关于Python网络爬虫框架scrapy

    关于Python网络爬虫框架scrapy

    这篇文章主要介绍了关于Python网络爬虫框架scrapy,爬虫框架是实现爬虫功能的一个软件结构和功能组件的集合,需要的朋友可以参考下
    2023-04-04
  • 关于Python中compile() 函数简单实用示例详解

    关于Python中compile() 函数简单实用示例详解

    这篇文章主要介绍了关于compile() 函数简单实用示例,compile() 函数将一个字符串编译为字节代码,compile将代码编译为代码对象,应用在代码中可以提高效率,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Tensorflow2.4从头训练Word Embedding实现文本分类

    Tensorflow2.4从头训练Word Embedding实现文本分类

    这篇文章主要为大家介绍了Tensorflow2.4从头训练Word Embedding实现文本分类,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论