python - 如何打开终端,在其上执行 python 脚本,然后等待脚本结束?
问题描述
本质上,我需要做的是创建一个打开新终端的函数,在其上执行 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内的命令退出
推荐阅读
- php - 如何使用 PhpSpreadSheet 折线图在每个标记中设置可见数据标签?
- python-3.x - AVL 树,删除最小节点(Python 3)
- c - C中函数的意外输出
- php - 在搜索页面 wordpress 上显示 2 个类别
- java - 在 Java 中计算三角形
- javascript - 从数组中加载前 10 个项目,然后在 React 中加载下 10 个项目
- python-3.x - 如何使用条件按索引位置比较列表列表中的项目?(Python)
- java - JDA - 如何获取机器人本身的用户 ID
- c++ - C++ 无法通过传递字符串或 c_str() 作为参考来打开文件
- lua - roblox 的 Lua 音频脚本不起作用?