用Python保存print语句的内容

Nic*_*ais 1 python printing

我正在使用某人的代码,c++其中由python. 我无法进入源代码并对其进行修改。当用 调用时python,它会打印一些东西,我想将此输出分配给一个变量。我怎样才能做到这一点?

def print_something(string):
    print(string)

x = print_something('foo')
Run Code Online (Sandbox Code Playgroud)
print(type(x))
Run Code Online (Sandbox Code Playgroud)
Out[5]: NoneType
Run Code Online (Sandbox Code Playgroud)

理想情况下,此代码将分配'foo'x作为字符串。

And*_*ely 5

也许你可以重定向sys.stdout到缓冲区?

import sys
from io import StringIO

stdout_backup = sys.stdout
sys.stdout = string_buffer = StringIO()

# this function prints something and I cannot change it:
def my_function():
    print('Hello World')

my_function()  # <-- call the function, sys.stdout is redirected now

sys.stdout = stdout_backup  # restore old sys.stdout

string_buffer.seek(0)
print('The output was:', string_buffer.read())
Run Code Online (Sandbox Code Playgroud)

印刷:

The output was: Hello World
Run Code Online (Sandbox Code Playgroud)