You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Python打开外部程序,如何终止脚本且保持程序运行?

解决Python脚本终止后关联程序关闭的问题

问题分析

你当前的实现存在两个核心问题:

  1. 使用shell=True调用start命令时,启动的程序实际依附于cmd子进程,当Python脚本终止时,cmd进程被关闭,导致关联程序也随之退出。
  2. 添加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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:08:21