Windows下Python打开外部程序,如何终止脚本且保持程序运行?
解决Python脚本终止后关联程序关闭的问题
问题分析
你当前的实现存在两个核心问题:
- 使用
shell=True调用start命令时,启动的程序实际依附于cmd子进程,当Python脚本终止时,cmd进程被关闭,导致关联程序也随之退出。 - 添加
CREATE_NEW_PROCESS_GROUP时出现WinError 193,是因为start是cmd的内置命令,并非独立可执行文件,参数配置不当会触发该错误。
解决方案
方案1:使用os.startfile(推荐)
这是Windows系统原生的文件打开方法,直接调用系统关联程序启动文件,且启动的进程与Python脚本完全独立,关闭脚本不会影响程序运行。
代码示例:
import os os.startfile(file_path)
方案2:正确配置subprocess参数
如果必须使用subprocess,需调整命令参数与creationflags,确保进程完全脱离父进程:
import subprocess # 定义所需的进程创建标志 DETACHED_PROCESS = 0x00000008 CREATE_NO_WINDOW = 0x08000000 # 通过cmd /c start /b 启动程序,避免创建新窗口并脱离父进程 subprocess.Popen( ['cmd', '/c', 'start', '/b', '', file_path], creationflags=DETACHED_PROCESS | CREATE_NO_WINDOW, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE )
/b参数:让start命令不创建新的cmd窗口DETACHED_PROCESS:使子进程完全脱离父进程的控制CREATE_NO_WINDOW:避免弹出多余的cmd窗口
内容的提问来源于stack exchange,提问作者KjVdB
相关产品推荐
相关产品推荐

