Python 脚本执行另一个脚本并在第二个脚本完成其工作后恢复

发布于 2024-11-26 01:42:28 字数 282 浏览 1 评论 0原文

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

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

Is there a way to check if a subprocess has finished its job? My python script executes an 123.exe from cmd. 123.exe then does some things and in the end it writes 1 or 0 to a txt file. Python script then reads the txt file and continues with the job if '1' and stops if '0'. At the moment all that I can think of, is to put the python script to sleep for a minute. That way the 123.exe has most certainly written 1 or 0 into the txt file. This realization is very simple but at the same time stupid.

So my question is, is there a way to deal with this problem without the need for timeout? A way to make the python script to wait til the 123.exe stops?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

过气美图社 2024-12-03 01:42:28

使用:

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

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

如果您需要手动实例化 subprocess.Popen,请执行

Popen.wait()

(然后检查 Popen.returncode)。

Use:

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

This will execute the command, wait until it finishes, and you get its return code into retcode (this way you could also avoid the need of checking the output status file, if the command returns a proper return code).

If you need to instantiate manually the subprocess.Popen, then go for

Popen.wait()

(and then check Popen.returncode).

可是我不能没有你 2024-12-03 01:42:28

我会使用 call() subprocess 模块的简写。从文档中:

运行带参数的命令。等待命令完成,然后返回
返回码属性。

它应该这样工作:

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

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

I would use the call() shorthand from the subprocess module. From the documentation:

Run command with arguments. Wait for command to complete, then return
the returncode attribute.

It should work this way:

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

of course you won't use the retcode, but your script will anyhow hang until the 123.exe has terminated.

睡美人的小仙女 2024-12-03 01:42:28

试试这个:

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

这将等到该过程完成并且您的脚本将从这里继续。

Try this:

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

This will wait until the process is done and your script will continue from here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文