【发布时间】:2020-07-22 23:31:55
【问题描述】:
我正在寻找一个可以使任何打印静音的功能,例如,这条线不会做任何事情:
silence(print('hello'))
【问题讨论】:
-
输入
#比输入silence( )更容易
我正在寻找一个可以使任何打印静音的功能,例如,这条线不会做任何事情:
silence(print('hello'))
【问题讨论】:
# 比输入silence( ) 更容易
这不能使打印静音,因为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 对象。
您还可以选择在上下文结束时对收集的打印件做一些事情。
【讨论】:
os.devnull,这只会将其丢弃,不会产生将其存储在内存中的开销。