在函数内部获取“print”语句的输出。

36 浏览
0 Comments

在函数内部获取“print”语句的输出。

我正在使用一个函数库,其中一些函数会打印我需要的数据:

def func():
   print "data"

如何调用这个函数并将打印的数据存入一个字符串中?

0
0 Comments

问题:如何在函数内部获取print语句的输出?

当无法修改函数内部代码时,可以通过重定向sys.stdout来实现:

import sys
stdout = sys.stdout
import StringIO
s = StringIO.StringIO()
sys.stdout = s
print "hello"
sys.stdout = stdout
s.seek(0)
s.read()

如果使用Python3,需要将第三行修改为"from io import StringIO",第四行修改为"s = StringIO()"。

解决方法:通过重定向sys.stdout来将print语句的输出内容保存到一个StringIO对象中,然后可以通过读取该对象来获取输出结果。

0