我有它使用上下文管理协议有一会儿(主要用于py2exe部署,其中应用任何内容写入标准错误导致难看的对话无声的标准错误流的一类最Python的方式时,应用程序是封闭的,而我这样做,我知道会有一些标准错误输出的东西)忽略输出
import sys
import os
from contextlib import contextmanager
@contextmanager
def noStderr():
stderr = sys.stderr
sys.stderr = open(os.devnull, "w")
yield
sys.stderr = stderr
我的问题是,什么是更Python,打开系统的比特斗和写入的是,的合理的清洁液或跳过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
而FWIW,我会说,写“位斗”将是一个更Perlish的解决方案:) – Chirael 2009-11-25 22:41:50