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

Python IO: disable standard output stream and print what we want

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

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

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

问题:

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

1.only 打印“你好”,

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

谢谢你的想法。

您可以将 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.