VSCode运行Python脚本时自动切换目录致文件找不到问题求助
VSCode运行Python脚本时工作目录异常导致文件找不到的解决方法
核心原因
VSCode运行调试时自动执行了cd /home/kali/Desktop,导致当前工作目录不是脚本所在的/Desktop/Python/File Handling,因此无法找到同目录下的文件。
解决方案
1. 配置调试launch.json固定工作目录
这是最直接的解决方式,让调试时自动切换到脚本所在目录:
- 打开VSCode左侧「调试」面板,点击「创建launch.json文件」并选择Python环境
- 在生成的launch.json中,给对应配置添加
"cwd": "${fileDirname}"字段,示例:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${fileDirname}" } ] }
${fileDirname}是VSCode内置变量,代表当前打开脚本的所在目录,运行不同脚本时会自动适配。
2. 修改VSCode集成终端默认工作目录
如果希望集成终端打开时默认进入脚本所在目录:
- 按下
Ctrl+,打开设置面板 - 搜索
terminal.integrated.cwd,将其值修改为${fileDirname} - 重启VSCode生效,之后终端会自动切换到当前脚本的目录
3. 排查插件或任务导致的自动目录切换
若之前正常突然出现问题,可能是插件或任务配置干扰:
- 查看已安装的终端、项目管理类插件,临时禁用最近新增的插件,排查是否是插件自动修改了工作目录
- 检查项目根目录下的
.vscode/tasks.json,看是否存在自动执行cd /home/kali/Desktop的任务配置,如有则删除或修改
4. 代码层面的通用兼容写法(无需修改VSCode设置)
如果不想依赖VSCode设置,可在脚本开头添加一段通用代码,自动切换到脚本所在目录:
import os # 获取当前脚本的绝对路径所在目录 script_directory = os.path.dirname(os.path.abspath(__file__)) # 切换工作目录到脚本目录 os.chdir(script_directory) # 之后正常操作文件 with open("apple.jpeg", "rb") as f: # 文件操作逻辑 pass
这种写法不受运行环境影响,在VSCode、终端或其他编辑器中都能正确找到同目录文件。
内容的提问来源于stack exchange,提问作者H Prop
相关产品推荐
相关产品推荐

