如何通过Python的subprocess模块调用终端启动VSCode并打开指定项目目录及文件
如何通过Python的subprocess模块调用终端启动VSCode并打开指定项目目录及文件
刚好我之前写本地开发工具脚本时遇到过一模一样的需求,其实实现起来很简单,核心就是利用VSCode提供的终端命令,再通过Python的subprocess模块去调用它就行。
先做个前置准备
在MacOS上,VSCode默认不会把code命令添加到系统PATH里,所以第一步得先配置一下:
- 打开VSCode,按下
Cmd+Shift+P调出命令面板 - 搜索并执行「Shell Command: Install 'code' command in PATH」
这样之后,你在终端里输入code就能直接启动VSCode了,这是Python脚本能调用它的前提。
具体实现代码
我推荐用subprocess.run()来执行命令,这是Python 3.5+的推荐用法,安全且易调试:
import subprocess import os # 定义你的项目目录和目标文件路径,用~代表用户目录 project_dir = "~/workspace/my/project/" target_file = "~/workspace/my/project/javascript-file.js" # 把~展开成系统能识别的绝对路径,避免路径解析错误 project_dir = os.path.expanduser(project_dir) target_file = os.path.expanduser(target_file) # 调用code命令,同时打开指定目录和文件 try: subprocess.run(["code", project_dir, target_file], check=True) print("VSCode已成功打开指定目录和文件") except subprocess.CalledProcessError: print("启动VSCode失败,请检查code命令是否配置正确")
补充说明
- 为什么用列表传参?这种方式不需要启动shell,能避免路径里有空格、特殊字符时出现解析错误,也更安全(防止shell注入风险)
- 如果不想等待VSCode启动完成就继续执行脚本,可以换成
subprocess.Popen():subprocess.Popen(["code", project_dir, target_file]) - 要是你习惯用shell模式(不推荐),也可以这么写,但要注意路径转义:
subprocess.run(f"code {project_dir} {target_file}", shell=True, check=True)
总的来说,思路就是用Python调用系统里的code终端命令,把要打开的目录和文件作为参数传递进去就行,非常直观。
备注:内容来源于stack exchange,提问作者Decoded
相关产品推荐
相关产品推荐

