Этот вопрос закрыт для ответов, так как повторяет вопрос Python, Как получить текст из консоли?
holy_molly
@holy_molly
Начинающий Python программист

Как сохранить вывод терминала в переменную?

Пишу телеграм бота для удалённого управления своим ПК посредством терминала, но столкнулся с проблемой. Команды отосланные на ПК выполняются, но не сохраняются при ошибках.
Пробовал и subprocess.check_output и os.popen и subprocess.Popen.
Проблема в том, что при выполнении некоторых команд вывод в терминале отсутствует, то есть b'', но все же на экран что-то выводится. Вот этот вывод мне и нужен.
  • Вопрос задан
  • 237 просмотров
Ответы на вопрос 1
holy_molly
@holy_molly Автор вопроса
Начинающий Python программист
Нашёл:

from io import StringIO
import sys

class OutputInterceptor(list):
    def __enter__(self):
        self._stdout = sys.stdout
        sys.stdout = self._stringio = StringIO()
        return self

    def __exit__(self, *args):
        self.extend(self._stringio.getvalue().splitlines())
        del self._stringio
        sys.stdout = self._stdout


with OutputInterceptor() as output:
    # Любой вывод в консоль из этого блока будет сохраняться в переменную output
    print("123")


print('\n'.join(output))
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы