Как получить только что выведенную строку обратно в переменную?
Я решил воспользоваться exec() для того, чтобы выполнять строки кода Python, получаемые на вход через input(). Но проблема exec() в мгновенном выводе строки, если я передаю в него print('Hello'), к примеру. Но мне не нужен вывод этой строки в консоль, а нужно записать её в переменную или массив, чтобы позже вывести данные через API или записать их в файл, допустим. Как это реализовать?
Я читал вопрос про stdin/stdout, не стоит его упоминать. Там затрагивается другая тема, а ответчик на вопрос заявлет, что print() пишет в sys.stdout, однако это не так. Увы, sys.stdout.readable() возвращает мне False, а значит в любом случае я не смогу прочитать данные, которые попали туда через print().
Жду ответа, спасибо.
Ответы (1 шт):
In [53]: from io import StringIO
In [54]: from contextlib import redirect_stdout
In [55]: with StringIO() as buffer, redirect_stdout(buffer):
...: print("hello world")
...: out = buffer.getvalue()
...:
In [56]: out
Out[56]: 'hello world\n'