如何打开终端,在其上执行 python 脚本,然后等待脚本结束?

How can I open a terminal, execute a python script on it and then wait for the script to end?

本质上,我需要做的是创建一个打开新终端的函数,在其上执行 python 脚本,然后等待脚本结束。 根据我在网上阅读的内容,最好的方法是使用 Python library 子进程。但是,我发现它很难使用。 当我运行以下代码时:

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 中的命令退出