繁体   English   中英

Python3从另一个脚本重新启动一个脚本

[英]Python3 restart a script from another script

这种情况:

我在Linux中的2个不同Shell中运行的python中有2个脚本: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”的外壳中启动了一个新的“ roomcontrol.py”位置,我需要在他的外壳中重新启动roomcontrol.py。 或者关闭他的外壳并打开一个新外壳。

编辑:

我也尝试过:

import subprocess

dir = os.path.dirname(os.path.realpath(__file__)) + "/roomcontrol.py"
subprocess.Popen([dir], stdout=subprocess.PIPE, shell=True)

没用 它在server.py的同一外壳中写了很多东西,而我的光标变成了一个叉,如果我单击某个地方,它会像以前那样写东西。 它写的一个小例子:

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:

创建一个新的.sh文件(例如“ restart.sh”):

#!/bin/bash
kill $(pgrep -f 'python3 roomcontrol.py')
python3 roomcontrol.py &

然后打电话

os.system('./restart.sh')

您的“ server.py”脚本中的某个位置。

PS:您必须通过运行以下命令使.sh文件可执行:

chmod +x restart.sh

编辑:我不确定如何从另一个shell启动进程,但是可以使用以下(bash)命令在另一个终端窗口中启动“ roomcontrol.py”:

gnome-terminal -x sh -c 'python3 roomcontrol.py'

但是,那么您必须将“ restart.sh”替换为

#!/bin/bash
kill -9 $(pgrep -f 'sh -c python3 roomcontrol.py')
gnome-terminal -x sh -c 'python3 roomcontrol.py'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM