如何打开终端,在其上执行 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 中的命令退出
本质上,我需要做的是创建一个打开新终端的函数,在其上执行 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 中的命令退出