将终端输出重定向到要在控制台中显示的变量

问题描述 投票:0回答:1

我正在制作一个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
python cmd terminal console subprocess
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.