Python脚本执行另一个脚本并在其完成后继续运行
有没有办法检查一个子进程是否完成了它的工作?我的Python脚本通过命令行运行一个叫做123.exe的程序。这个程序会做一些事情,最后会在一个文本文件里写入1或0。然后,Python脚本会读取这个文本文件,如果是'1'就继续执行,如果是'0'就停止。目前我能想到的办法就是让Python脚本暂停一分钟。这样的话,123.exe肯定已经把1或0写进文本文件了。这个想法很简单,但同时也有点傻。
所以我想问,有没有办法解决这个问题,不用设置超时?有没有办法让Python脚本等到123.exe停止后再继续?
3 个回答
0
试试这个:
p = subprocess(...)
os.waitpid(p.pid, 0)
这样做会等到这个过程完成后,你的脚本才会继续往下执行。
1
我会使用 call()
这个简单的方法,它来自于 subprocess 模块。根据文档的说明:
这个方法可以运行带参数的命令。它会等命令执行完毕,然后返回一个叫做 returncode 的属性。
它的用法应该是这样的:
import subprocess
retcode = subprocess.call(["123.exe"])
当然你不会用到 retcode
,但是你的脚本会一直等待,直到 123.exe 这个程序结束。
3
使用:
retcode = subprocess.call(["123.exe"])
这样做会执行这个命令,等它完成后,你可以得到它的返回代码,存放在retcode
里(这样你就不需要去检查输出状态文件了,只要命令返回一个正确的返回代码就行)。
如果你需要手动创建subprocess.Popen
,那么可以使用:
Popen.wait()
(然后检查Popen.returncode
)。