【问题标题】:Any way to suppress output from print calls? [duplicate]有什么方法可以抑制打印调用的输出? [复制]
【发布时间】:2020-07-22 23:31:55
【问题描述】:

我正在寻找一个可以使任何打印静音的功能,例如,这条线不会做任何事情:

silence(print('hello'))

【问题讨论】:

标签: python printing


【解决方案1】:

这不能使打印静音,因为printsilence 之前执行:

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,这只会将其丢弃,不会产生将其存储在内存中的开销。
  • @martineau 我同意。如果数据不需要,最好直接扔掉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
相关资源
最近更新 更多