【发布时间】:2020-01-04 23:37:47
【问题描述】:
我正在尝试让我的 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 命令)。
如果您需要更多信息,或者您知道如何优雅地使其工作,请告诉我。谢谢!
【问题讨论】:
-
来自
subprocess.call的文档:“运行 args 描述的命令。等待命令完成,然后返回 returncode 属性。” docs.python.org/3/library/subprocess.html#subprocess.call -
@IainShelvington 好的,那么,在运行我的代码的下一行之前,我该如何让它不等待启动的进程完成?非常感谢!
标签: python shell subprocess