以字符串形式获取函数的输出

时间:2019-02-22 09:34:09

标签: python

我有一个打印功能。如何将其输出转换为字符串?
注意:我无法更改功能代码。

def f():
    print('hello world')

# do something

assert x == 'hello world\n'

我需要这个,因为spark数据框具有方法explain,可以打印有关执行计划的信息。但是我需要在程序中将该信息作为字符串

>>> df.explain()
== Physical Plan ==
Scan ExistingRDD[age#0,name#1]

1 个答案:

答案 0 :(得分:0)

我在https://stackoverflow.com/a/22434594/4204843

处找到了解决方案
def f():
    print('hello world')

import io
from contextlib import redirect_stdout

with io.StringIO() as buf, redirect_stdout(buf):
    f()
    x = buf.getvalue()

assert x == 'hello world\n'