Python调用.bat文件后无需等待其结束直接继续执行后续代码如何实现
原因说明
os.system 是同步阻塞接口,调用后会一直等待目标进程执行完成、退出后才会返回结果,所以会遇到必须手动关闭bat运行窗口才能执行后续print的情况。
解决方案
使用Python标准库的subprocess.Popen替代os.system即可实现非阻塞调用,这也是官方推荐的替换旧进程调用接口的方案。修改后的代码如下:
import subprocess # 非阻塞启动bat文件,新开独立控制台窗口 subprocess.Popen( "scrcpy-console.bat", shell=True, creationflags=subprocess.CREATE_NEW_CONSOLE ) print("continue")
参数说明
subprocess.Popen调用后不会等待子进程运行结束,会直接返回,主进程可以继续执行后续代码shell=True用于让系统shell解析执行批处理文件,符合bat文件的运行要求CREATE_NEW_CONSOLE是Windows平台专属参数,会给bat文件新开一个独立的控制台窗口,和Python主进程窗口隔离,互不干扰。如果你不需要弹出独立窗口,可以删除这个参数。
额外提示
如果后续需要主动关闭启动的bat对应进程,可以把Popen的返回值保存下来,需要关闭时调用终止方法即可:
# 保存进程实例 proc = subprocess.Popen("scrcpy-console.bat", shell=True, creationflags=subprocess.CREATE_NEW_CONSOLE) # 后续需要关闭进程时调用 proc.terminate()
内容的提问来源于stack exchange,提问作者Omalchielo
相关产品推荐
相关产品推荐

