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

VSCode Python中os.chdir修改工作目录重启后失效问题咨询

核心原因

os.chdir() 对工作目录的修改仅作用于当前运行的Python进程,进程终止后修改会直接失效,不存在持久化效果。
你在Spyder、JupyterLab中没有遇到重置问题,本质是这两个工具默认会将启动工作目录设置为上次打开的项目/笔记路径,和os.chdir的修改没有关系。
VSCode启动Python进程时,默认按以下规则初始化工作目录:

  • 若已通过「打开文件夹」加载了工作区,默认取工作区根路径
  • 若未打开工作区、仅打开了单个文件,默认取系统用户主目录(即你看到的/Users/hh)
    重启VSCode后启动的是全新Python进程,会重新按上述规则加载默认路径,自然会回到初始状态。
可行解决方案

方案1:打开目标目录作为VSCode工作区(推荐)

通过VSCode顶部菜单「文件-打开文件夹」,选择/Users/hh/pywd/作为工作区目录加载。后续只要在该工作区下运行Python代码,默认工作目录就会固定为该路径,无需每次手动切换。
配置后可运行以下代码验证:

import os
print(os.getcwd())
# 预期输出:/Users/hh/pywd/

方案2:修改Python扩展默认配置

如果不想每次手动加载工作区,可以直接修改VSCode Python扩展的默认路径规则:

  1. Mac端按快捷键Cmd+,打开设置面板
  2. 若需要默认以当前运行脚本所在文件夹为工作目录,搜索Python > Terminal: Execute In File Dir,勾选对应选项即可
  3. 若需要全局固定工作目录为指定路径,搜索Python > Default Cwd,直接填入目标路径/Users/hh/pywd/保存即可

方案3:代码层面自动切换路径(全环境兼容)

如果希望代码不依赖编辑器配置,在任意环境运行都能自动定位到目标工作目录,可以在代码开头增加路径判断逻辑:

  • 固定切换到指定路径的写法:
import os
target_wd = '/Users/hh/pywd/'
if os.getcwd() != target_wd:
    os.chdir(target_wd)
  • 自动切换到当前脚本所在文件夹的通用写法(无需硬编码绝对路径):
import os
script_path = os.path.abspath(__file__)
script_dir = os.path.dirname(script_path)
os.chdir(script_dir)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 16:21:44