【问题标题】:Python IO: disable standard output stream and print what we want [duplicate]Python IO:禁用标准输出流并打印我们想要的[重复]
【发布时间】:2015-07-06 10:12:01
【问题描述】:

假设我有一个由三行组成的 python 程序。

if __name__=“__main__”:
   foo( )
   print “Hello”

这里,foo( ) 是一个第三方函数,可以将内容输出到标准输出。例如,foo( ) 只有一行 print 'I am here'。关键是我无权更改可能包含输出语句的 foo(),并且我不想将其输出与我的混合。

问题

如何更改上面程序的第三行(打印“Hello”),让这个程序

1.只打印“Hello”,而

2.不打印来自foo( )的任何内容?

感谢您的想法。

【问题讨论】:

  • 如果您想稍后访问该值,您可以将其存储在 StringIO 对象pastebin.com/NHWAjJQv
  • @PadraicCunningham 很高兴知道这一点。谢谢。

标签: python io output outputstream


【解决方案1】:

您可以将stdout 重定向到os.devnull(空设备);以下:

import os
import sys
def foo():
  print "foo"
if __name__ == "__main__":
  out = sys.stdout
  null = open(os.devnull, 'w')
  sys.stdout = null
  foo()
  sys.stdout = out
  print "Hello"

将打印Hello。您可以阅读有关空设备here 的信息。

【讨论】:

  • 非常感谢您的快速回复。我一直在寻找类似 >/dev/null 的东西。
  • 不用感谢我——宁可接受我的问题,我不介意名誉;P
猜你喜欢
  • 2018-08-10
  • 1970-01-01
  • 2013-05-01
  • 2016-06-26
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 2018-02-25
  • 2017-11-26
相关资源
最近更新 更多