参考GPT和自己的思路:在Linux系统中,一个窗口对应一个进程,而不同进程之间是不能直接交互的。因此,如果你想在第二个终端窗口中执行命令并获取其输出,你需要启动一个新的进程来执行命令。
你可以使用Python的subprocess模块来创建一个新的进程,并将命令的输出保存在一个变量中。然后,你可以在第一个终端窗口中使用pyautogui库发送一些信号,例如按下某些键或者输入一些特定的字符串,来使其失去焦点,然后在第二个终端窗口中执行命令。
下面是一个示例代码:
import subprocess
import pyautogui
# 在第二个终端窗口中执行的命令
cmd = "ls -l"
# 获取第二个终端窗口的句柄
# 在这里使用了pyautogui来模拟按键和输入,需要先将其置于前台
pyautogui.hotkey("ctrl", "alt", "t")
pyautogui.typewrite(cmd)
pyautogui.press("enter")
# 将第二个终端窗口设置为前台窗口,使其具有焦点
pyautogui.hotkey("alt", "tab")
# 创建一个新的进程来获取命令的输出
p = subprocess.Popen(
cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
# 获取命令的输出
output, error = p.communicate()
# 输出命令的输出和错误信息
print("Output:", output.decode())
print("Error:", error.decode())
在上面的代码中,我们首先使用pyautogui库模拟按下快捷键来打开一个新的终端窗口,并在其中输入了一个Linux命令。然后,我们使用pyautogui模拟按下alt+tab键将第二个终端窗口设置为前台窗口,使其具有焦点。
接下来,我们使用subprocess模块创建了一个新的进程来执行命令,并将命令的输出保存在了一个变量中。最后,我们输出了命令的输出和错误信息。