gpt4 book ai didi

python - 大多数忽略输出的pythonic方式

转载 作者:行者123 更新时间:2023-11-28 20:00:02 25 4
gpt4 key购买 nike

我有一个类,它使用上下文管理协议(protocol)在一段时间内有一个静默的 stderr 流(主要用于 py2exe 部署,其中应用程序向 stderr 写入任何内容会在应用程序关闭时导致难看的对话框,并且我'我正在做一些我知道会有一些 stderr 输出的事情)

import sys
import os
from contextlib import contextmanager

@contextmanager
def noStderr():
stderr = sys.stderr
sys.stderr = open(os.devnull, "w")
yield
sys.stderr = stderr

我的问题是什么会更 pythonic,打开系统的位桶并写入它的合理干净的解决方案,或者跳过 fd 和写操作的分配,并创建一个新的类 ala:

class nullWriter(object):
def write(self, string):
pass

然后将上面的代码替换为

from contextlib import contextmanager

@contextmanager
def noStderr():
stderr = sys.stderr
sys.stderr = nullWriter()
yield
sys.stderr = stderr

最佳答案

我认为后一种解决方案更优雅。您避免进入系统环境,可能会浪费一个 fd。为什么在不需要时退出操作系统?

关于python - 大多数忽略输出的pythonic方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1800396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com