如何从python子例程捕获stdio?
我有以下代码:如何从python子例程捕获stdio?,python,io,Python,Io,我有以下代码: def fsub(): print 'OK' def fmain(): a = fsub() fmain() 显然,fsub()不会返回'OK'并在fmain()中分配给a。然而,这正是我想要的。我们是否可以在不更改的情况下使其fsub()?当您执行a=fsub()时,您试图将a赋值为fsub()的返回,在这种情况下无(因为fsub()不返回任何内容) 正确的做法是将标准输出重定向到一个文件,然后调用fsub()函数,然后将标准输出重定向回原始标准输出: impor
def fsub():
print 'OK'
def fmain():
a = fsub()
fmain()
显然,fsub()
不会返回'OK'并在fmain()
中分配给a
。然而,这正是我想要的。我们是否可以在不更改的情况下使其fsub()
?当您执行a=fsub()
时,您试图将a
赋值为fsub()
的返回,在这种情况下无(因为fsub()
不返回任何内容)
正确的做法是将标准输出重定向到一个文件,然后调用fsub()
函数,然后将标准输出重定向回原始标准输出:
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
结果:
>>> fmain()
Output of fsub():
OK
当您执行a=fsub()
操作时,您试图将a
赋值为fsub()
的返回值,在本例中为None
(因为fsub()
不返回任何内容)
正确的做法是将标准输出重定向到一个文件,然后调用fsub()
函数,然后将标准输出重定向回原始标准输出:
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
结果:
>>> fmain()
Output of fsub():
OK
你应该回去接受我们一些问题最相关的答案。@HailiangZhang,通常在问完问题后,点击复选符号,你会接受最好的答案。你的10个问题都没有这样做过,甚至一次也没有。你应该回去接受我们一些问题最相关的答案。@HailiangZhang,通常在提问后,点击复选标记接受最佳答案。对于你的10个问题,你一次也没有这样做。对不起,我需要重新表述我的问题。请再次查看原始问题…我需要从fsub中获取打印输出fmain@HailiangZhang,编辑我的帖子我建议使用StringIO
对象而不是文件。对不起,我需要重新表述我的问题。请再次查看原始问题…我需要从fsub中获取打印输出fmain@HailiangZhang,编辑我的帖子我建议使用StringIO
对象而不是文件。