перенаправить вывод терминала в переменную для отображения в консоли - PullRequest
0 голосов
/ 14 апреля 2020

Я делаю оболочку python, которая позволяет вам общаться с терминалом во время выполнения, без необходимости открывать новое окно, прямо через игровую консоль. Сейчас я использую команду self.process = subprocess.Popen(self.cmd, shell=True) для выполнения Windows запросов командной строки. Однако я не знаю, как ловить отпечатки, такие как те, которые отображаются при выполнении, например, команды driverquery. Есть ли простой способ перенаправить эти выходные данные в виде необработанной строки или чего-то еще?

Вот весь класс, который я использую atm для выполнения команд через cmd

import subprocess, threading, os
__id__ = 'shell'
PATH = os.getcwd()

class Command:
    def __init__(self, cmd):
        self.cmd = cmd
        self.process = None

    def run(self, timeout):
        def target():
            print('[%s]: Thread started' %__id__)
            self.process = subprocess.Popen(self.cmd, shell=True)
            self.process.communicate()
            print('[%s]: Thread finished' %__id__)

        thread = threading.Thread(target=target)
        thread.start()

        thread.join(timeout)
        if thread.is_alive():
            print('[%s]: Terminating process' %__id__)
            self.process.terminate()
            thread.join()
        #print(subprocess.check_output(PATH))
        return self.process.returncode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...