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.
假设我有一个由三行组成的 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.