我正在寻找一个可以让任何打印静音的函数,所以例如,这一行什么都不做:
silence(print('hello'))
这无法使打印静音,因为print
在silence
:之前执行
silence(print('hello'))
另一方面,你可以这样做:
@contextlib.contextmanager
def silence():
sys.stdout, old = io.StringIO(), sys.stdout
try:
yield
finally:
sys.stdout = old
with silence():
print('hello')
在silence()
上下文中,所有打印都重定向到io.StringIO
对象。您也可以选择在上下文末尾对收集到的打印进行处理。