我有它使用上下文管理協議有一會兒(主要用於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