Сохраните содержимое выписки в Python - PullRequest
1 голос
/ 24 января 2020

Я использую чей-то код в c++, который вызывается python. У меня есть нет способ получить в исходный код и изменить его. Когда вызывается с python, он что-то печатает, и я хочу присвоить этот вывод переменной. Как я могу это сделать?

def print_something(string):
    print(string)

x = print_something('foo')
print(type(x))
Out[5]: NoneType

В идеале этот код присваивает 'foo' x в виде строки.

1 Ответ

5 голосов
/ 24 января 2020

Может быть, вы можете перенаправить 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())

Печать:

The output was: Hello World
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...