vscode中open("config.json")报filenotfounderror主因是当前工作目录(cwd)与脚本所在目录不一致;需在对应子项目的.vscode/launch.json中显式配置"cwd":"${filedirname}"或"${workspacefolder}",否则相对路径将基于窗口根目录而非文件自身目录查找。

为什么 open("config.json") 报 FileNotFoundError
不是文件真丢了,是 open() 默认按当前工作目录(cwd)找,而 VSCode 的 cwd 往往不是你编辑的文件所在目录。比如你在 src/utils/main.py 里写 open("config.json"),它会去项目根目录下找,而不是 src/utils/ 下。
- 验证当前 cwd:在 VSCode 终端里运行
pwd(macOS/Linux)或cd(Windows),输出的就是实际起点 - 单文件打开(没用 File > Open Folder)→ cwd 是用户主目录,极不可靠
- 多根工作区下,cwd 默认是第一个
folders[0]路径,跟你正在编辑的子项目无关 - 调试时更危险:如果
launch.json没配cwd,就直接继承窗口级 cwd,几乎总和预期不符
launch.json 必须显式设 cwd,不能依赖默认值
只要脚本里用了相对路径,launch.json 就得写死 cwd 字段,否则调试必然失败。位置也关键:必须放在对应子项目的 .vscode/launch.json 里,而不是工作区根目录下的 .vscode/ 中。
- 对单个项目(如
backend/):"cwd": "${workspaceFolder}" - 想让每个文件都以自身目录为起点(适合工具脚本):
"cwd": "${fileDirname}" - 跨子项目调试(如前端调后端 API):
"cwd": "${workspaceFolder:server}",前提是.code-workspace的folders里已定义了"name": "server" - 绝对别写
"cwd": "./server"或"cwd": "../backend"—— VSCode 不解析这种相对路径,会静默忽略
终端里跑代码时 cwd 怎么切才有效
VSCode 点右上角 ▶ 运行 Python,本质是在内置终端里执行 python xxx.py。所以最直接的办法,就是手动把终端 cwd 切到脚本所在目录。
- 打开终端(
Ctrl + `),用cd切到你当前文件的父目录,比如cd src/utils - 再运行
python main.py,这时open("config.json")就能正确命中同目录下的文件 - 不推荐长期靠改终端 cwd:容易忘记、协作时难复现;只适合快速验证或临时调试
- 注意:终端 cwd 和调试器 cwd 是两套机制,改终端不影响
launch.json行为
tasks.json 和 c_cpp_properties.json 的路径变量怎么用
C/C++ 编译和 IntelliSense 路径配置也依赖相同变量体系,但拼写错误或层级错位会导致“no such file or directory”这类报错。
-
tasks.json中args里引用源文件,优先用"${file}"(当前文件全路径)或"${workspaceFolder}/src/main.cpp",避免裸写"main.cpp" -
c_cpp_properties.json的includePath必须包含头文件真实位置,例如"${workspaceFolder}/include",不能只写"include" - 常见拼写陷阱:
${fileDirname}(不是${filedirname})、${workspaceFolder}(不是${workspacefolder}) - Windows 路径分隔符统一用正斜杠
/,VSCode 会自动转换;反斜杠要双写\,否则 JSON 解析失败
cwd 配错、变量拼错、配置文件放错位置——这三处出问题的概率加起来超过 80%。别猜,先看终端 pwd 输出,再核对 launch.json 里 cwd 的值和所在路径,最后检查变量大小写。











