Я делаю оболочку 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