执行另一个python脚本,然后关闭当前脚本

时间:2016-07-21 16:31:43

标签: python subprocess sys

我有一个python脚本script_a.py使用subprocess.call()执行另一个脚本script_b.py作为它结束前的最后一条指令。我需要script_b.py等待script_a.py关闭才能继续执行自己的说明。为此,我在script_b.py中使用了while循环。我怎样才能做到这一点?我尝试过的所有当前解决方案都会script_a.py等待,直到script_b.py完成才关闭。我觉得这可能涉及atexit()或类似的东西,但我迷失了。

非常感谢!

2 个答案:

答案 0 :(得分:1)

您的script_a.py将是:

import subprocess
#do whatever stuff you want here
p = subprocess.Popen(["python","b.py"])
p.wait()
p.terminate()

#continue doing stuff

答案 1 :(得分:1)

你可以做一些完全hacky的废话

<强> script_b.py

while not os.path.exists("a.done"):pass
time.sleep(0.2) # a little longer just to be really sure ...
os.remove("a.done")
... # rest of script b

<强> script_a.py

import atexit
atexit.register(lambda *a:open("a.done","w"))

或代替Popen只做

os.execl("/usr/bin/python","script_b.py")