我正在制作一个python shell,可让您在运行时与终端进行通信,而无需直接通过游戏控制台打开新窗口。现在我正在使用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