You need to enable JavaScript to run this app. Python使用subprocess.Popen打开记事本在VS Code中运行即关闭问题
优惠活动
大模型
产品
解决方案
定价
更多

Python使用subprocess.Popen打开记事本在VS Code中运行即关闭问题

问题成因
  • VS Code内置终端在Python脚本执行完毕后,会默认销毁整个脚本关联的进程树,你用sp.Popen启动的记事本属于脚本的子进程,会跟着脚本一起被终端终止。
  • IDLE运行脚本时不会主动清理派生的子进程,所以记事本可以正常保留。
解决办法

方法1:让主脚本等待记事本关闭后再退出

在代码末尾加wait()方法,阻塞主脚本直到记事本被手动关闭,修改后代码如下:

import subprocess as sp
programme = "Notepad.exe"
fileName = "nerd.txt"
notepad_proc = sp.Popen([programme, fileName])
# 等待子进程运行结束
notepad_proc.wait()

方法2:让记事本脱离主进程独立运行(Windows平台适用)

不需要主脚本等待的话,可以给Popen添加进程创建参数,让子进程脱离主进程的进程树,不会跟着主脚本销毁:

import subprocess as sp
programme = "Notepad.exe"
fileName = "nerd.txt"
sp.Popen([programme, fileName], creationflags=sp.CREATE_NEW_CONSOLE | sp.DETACHED_PROCESS)

方法3:修改VS Code运行逻辑

不想改代码的话可以调整运行方式:运行脚本时不要用VS Code内置终端,选择用外部终端启动即可,也可以在VS Code的Python扩展设置里关闭终端自动清理子进程的相关配置。


内容的提问来源于stack exchange,提问作者ma55iven3rd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:18:00