【发布时间】:2017-05-09 13:22:55
【问题描述】:
情况是这样的:
我有 2 个 Python 脚本在 Linux 的 2 个不同的 shell 中运行: 1° - python3 server.py 2° - python3 roomcontrol.py
我需要用户可以从 server.py 重新启动 roomcontrol.py。 我尝试使用子流程:
from subprocess import call
dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
call(["python3",dir])
这些指令只是在“server.py”的shell中启动了一个新的“roomcontrol.py”,我需要在他的shell中重新启动roomcontrol.py。或者关闭他的外壳并打开一个新的。
编辑:
我也试过了:
import subprocess
dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
subprocess.Popen([dir], stdout=subprocess.PIPE, shell=True)
它不起作用。 它在 server.py 的同一个 shell 中写了很多东西,我的光标变成了一个十字,如果我点击某个地方,它会像以前一样写东西。它写的一个小例子:
import: unable to grab mouse `': Resource temporarily unavailable @ error/xwindow.c/XSelectWindow/9199.
import: unable to grab mouse `': Resource temporarily unavailable @ error/xwindow.c/XSelectWindow/9199.
.
.
.
from: can't read /var/mail/xml.dom
/home/stark/Desktop/TrackingOk/Release/roomcontrol.py: 9: /home/stark/Desktop/Tr: not foundlease/roomcontrol.py:
/home/stark/Desktop/TrackingOk/Release/roomcontrol.py: 10: /home/stark/Desktop/T: not foundelease/roomcontrol.py: try:
【问题讨论】:
-
我没有使用过子流程,但在快速查看文档后Popen 看起来很有希望。
-
您是否将 shebang 添加到您的脚本 roomcontrol.py 中? (
#!/usr/bin/env python) -
@Olian04 我试过了(我编辑了帖子)
-
@slallum 是的,我做到了
标签: python subprocess call