Python IO:禁用标准输出流并打印我们想要的内容

时间:2015-04-27 19:41:58

标签: python io output outputstream

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

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

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

问题

如何更改上面程序的第三行(打印“Hello”),以便该程序

1.只打印“Hello”和

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

感谢您的想法。

1 个答案:

答案 0 :(得分:3)

您可以将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的信息。