有没有办法检查子进程是否已完成其工作?我的python脚本从cmd执行123.exe。 123.exe然后执行一些操作,最后它将1或0写入txt文件。然后Python脚本读取txt文件,如果为'1则继续作业,如果为'0则停止。目前我所能想到的就是让python脚本睡一会儿。这样123.exe肯定会在txt文件中写入1或0。这种实现很简单,但同时也很愚蠢。
所以我的问题是,有没有办法在不需要超时的情况下处理这个问题?一种让python脚本等待123.exe停止的方法吗?
答案 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)
这将等到该过程完成后,您的脚本将从此处继续。