Python 从“获取输出”;“打印”;函数内部

Python 从“获取输出”;“打印”;函数内部,python,python-2.7,Python,Python 2.7,我正在使用一个函数库,其中一些函数可以打印我需要的数据: def func(): print "data" 如何调用此函数并将打印的数据转换为字符串?如果无法更改这些函数,则需要重定向sys.stdout: >>> import sys >>> stdout = sys.stdout >>> import StringIO >>> s = StringIO.StringIO() >>> sys.st

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

def func():
   print "data"

如何调用此函数并将打印的数据转换为字符串?

如果无法更改这些函数,则需要重定向
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()
'hello\n'

你不能。。。尝试返回“数据”,这是唯一的方法。除非您想捕获另一个python脚本的输出,否则您可以使用
x=subprocess.Popen(“python script.py,shell=True”)
,然后使用
x.stdout.read()
。maybe(我的意思是maybe..只考虑一下)能够使用
eval()
调用函数并捕获输出..但不会重新返回..是的..我想避免更改库代码。如果真的没有办法,我将复制粘贴到代码中并使用
返回
在使用Python3时,您可以覆盖
打印
函数并让它在其他地方收集数据。这是python 2.7让我重新标记..
dis.dis()
也使用
print
;请参阅链接副本,了解如何解决此问题。我可以使用此解决方案..虽然不是很优雅。谢谢如果您想使用它,请将第3行更改为“from io import StringIO”,第4行更改为“s=StringIO()”。