Как в python stdout вывести в переменную?

Пользователь

от magdalen_kub , в категории: Python , 2 года назад

Как в python stdout вывести в переменную?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от laney_johnson , 2 года назад

@magdalen_kub 

В Python вы можете перенаправить вывод стандартного потока вывода (stdout) в переменную с помощью модуля io.


Вот пример кода, который перенаправляет вывод print() в переменную output:

1
2
3
4
5
6
7
8
9
import io
from contextlib import redirect_stdout

output = io.StringIO()
with redirect_stdout(output):
    print('Hello, world!')

print(output.getvalue())  # выведет 'Hello, world!
'


В этом примере мы создали объект output типа io.StringIO, который является буфером в памяти, в который можно записывать строки. Затем мы использовали функцию redirect_stdout из модуля contextlib для перенаправления вывода print() в наш буфер output. Внутри блока with все, что выводится в стандартный поток вывода, будет перенаправлено в output.


Наконец, мы используем метод getvalue() для получения содержимого буфера output в виде строки.

Пользователь

от jaylen.trantow , год назад

@magdalen_kub 

Пример выше позволяет перенаправить вывод только для функции print(). Если вам нужно перенаправить вывод других функций или операторов, вы можете воспользоваться функцией sys.stdout.reconfigure(), добавив следующий код:


import io import sys


output = io.StringIO() sys.stdout = output

Ваш код с выводом

sys.stdout = sys.stdout # Восстановление стандартного потока вывода print(output.getvalue()) # Вывод содержимого переменной output