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

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

基本上,我需要做的是创建一个函数,该函数打开一个新终端,在其上执行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!")

但是当我执行这样的操作时,脚本不会在新终端上运行,我希望它在新终端上运行。

这有可能吗?感谢您的帮助!

python python-3.x terminal subprocess gnome-terminal
1个回答
3
投票

您正在使用以下命令链接要在本地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中的命令退出


-2
投票

您是否尝试过在外壳程序中输入cmd字符串?“ python3 simple_action_client.py”只是另一个命令,您需要将其传递给gnome-shell。

© www.soinside.com 2019 - 2024. All rights reserved.