如何从python子例程中捕获stdio?

时间:2011-11-23 02:15:42

标签: python io

我有以下代码:

def fsub():
  print 'OK'

def fmain():
  a = fsub()

fmain()

显然fsub()不会返回“确定”,并在a中分配给fmain()。但是,这就是我想要的。无论如何我们可以不改变 fsub()吗?

1 个答案:

答案 0 :(得分:3)

执行a = fsub()后,您尝试a fsub()返回None,在这种情况下为fsub()(因为fsub()没有什么都可以。)

正确的做法是将stdout重定向到文件,然后调用import sys def fmain(): sys.stdout = open('output','a') fsub() sys.stdout = sys.__stdout__ print 'Output of fsub():' print open('output').read(), # added the coma (,) to avoid a new line 函数,并将stdout重定向到原始标准输出:

>>> fmain()
Output of fsub():
OK

结果:

{{1}}