我试图让我的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
命令)
如果您需要更多信息,或者您知道如何优雅地使其工作,请告诉我。谢谢
从python文档中,
subprocess.call
将运行args描述的命令。等待命令完成,然后返回returncode属性因为这将无限期地运行(直到您杀死它),所以下一行代码永远不会完成。您可以改为使用
subprocess.Popen
有关此过程的更多信息,请参见docs.
相关问题 更多 >
编程相关推荐