I suggest writing a context manager:
import contextlib
import sys
@contextlib.contextmanager
def nostderr():
savestderr = sys.stderr
class Devnull(object):
def write(self, _): pass
def flush(self): pass
sys.stderr = Devnull()
try:
yield
finally:
sys.stderr = savestderr
Now, wrap any code snippet whose stderr you want suppressed in a with nostderr():
and you have the localized, temporary, guaranteed-reversible stderr suppression that you want.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…