Python脚本执行另一个脚本并在其完成后继续运行

1 投票
3 回答
1019 浏览
提问于 2025-04-16 21:59

有没有办法检查一个子进程是否完成了它的工作?我的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)。

撰写回答