基本上,我需要做的是创建一个函数,该函数打开一个新终端,在其上执行python脚本,然后等待该脚本结束。从我一直在线阅读的内容来看,最好的方法是使用Python库子进程。但是,我发现使用起来非常困难。当我运行以下代码时:
def function():
cmd = "gnome-terminal; python3 simple_action_client.py"
subprocess.check_output(cmd, shell=True)
print("I'm done!")
在终端打开后执行打印,这意味着“ check_output”功能仅等待cmd的第一部分执行。
基本上,我想做的是以下事情:
def function():
terminal_command = "gnome-terminal"
script_command = "python3 script.py"
subprocess.run(terminal_command, shell = True)
subprocess.check_output(script_command, shell = True)
print("I'm done!")
但是当我执行这样的操作时,脚本不会在新终端上运行,我希望它在新终端上运行。
这有可能吗?感谢您的帮助!
您正在使用以下命令链接要在本地Shell中运行的命令
def function():
cmd = "gnome-terminal; python3 simple_action_client.py"
subprocess.check_output(cmd, shell=True)
print("I'm done!")
您需要调整cmd行以告知gnome-terminal执行该命令
def function():
cmd = "gnome-terminal --wait -- python3 simple_action_client.py"
subprocess.check_output(cmd, shell=True)
print("I'm done!")
注意“-”而不是“;”和“ --wait”以等待shell中的命令退出
您是否尝试过在外壳程序中输入cmd字符串?“ python3 simple_action_client.py”只是另一个命令,您需要将其传递给gnome-shell。