代码执行卡在subprocess.call命令处?

2024-09-23 16:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让我的Python代码启动一个.bat文件,而这个文件又启动一个.exe文件。进程启动后,我希望在终止.exe进程之前等待一定时间

但是,似乎没有执行任何超过启动.bat文件的subprocess.call命令的代码

以下是我目前掌握的代码:

print("About to launch OTB!")

subprocess.call(
    ".\olympian.bat",
    cwd=str(Path(os.path.abspath(__file__)).parent.parent),
    shell=True,
)

print("About to sleep")

time.sleep(time_var)

print("Sleep over, will close OTB now!")

subprocess.call("taskkill /F /im olympian.exe")

print("OTB has been closed!")

该程序确实启动了olympian.bat进程,但之后不会显示"About to sleep"消息

另外,olympian.exe程序应该运行无限长,除非我强制关闭它(在我的例子中使用taskkill命令)

如果您需要更多信息,或者您知道如何优雅地使其工作,请告诉我。谢谢


Tags: 文件to代码命令进程sleepcallexe
1条回答
网友
1楼 · 发布于 2024-09-23 16:26:17

从python文档中,subprocess.call将运行args描述的命令。等待命令完成,然后返回returncode属性

因为这将无限期地运行(直到您杀死它),所以下一行代码永远不会完成。您可以改为使用subprocess.Popen

有关此过程的更多信息,请参见docs.

相关问题 更多 >