Python脚本执行另一个脚本,并在第二个脚本完成其工作后继续

时间:2011-07-21 10:45:37

标签: python timeout subprocess wait

有没有办法检查子进程是否已完成其工作?我的python脚本从cmd执行123.exe。 123.exe然后执行一些操作,最后它将1或0写入txt文件。然后Python脚本读取txt文件,如果为'1则继续作业,如果为'0则停止。目前我所能想到的就是让python脚本睡一会儿。这样123.exe肯定会在txt文件中写入1或0。这种实现很简单,但同时也很愚蠢。

所以我的问题是,有没有办法在不需要超时的情况下处理这个问题?一种让python脚本等待123.exe停止的方法吗?

3 个答案:

答案 0 :(得分:3)

使用:

retcode = subprocess.call(["123.exe"])

这将执行命令,等待它完成,然后将其返回代码转换为retcode(这样,如果命令返回正确的返回码,您也可以避免检查输出状态文件的需要)。

如果您需要手动实例化subprocess.Popen,请转到

Popen.wait()

(然后检查Popen.returncode)。

答案 1 :(得分:1)

我会使用子进程模块中的 call() 速记。来自文档:

  

使用参数运行命令。等待命令完成,然后返回   returncode属性。

它应该以这种方式工作:

import subprocess
retcode = subprocess.call(["123.exe"])

当然你不会使用retcode,但是你的脚本无论如何都会挂起,直到123.exe终止。

答案 2 :(得分:0)

试试这个:

p = subprocess(...)
os.waitpid(p.pid, 0)

这将等到该过程完成后,您的脚本将从此处继续。