VSCode中相对路径的获取逻辑及修改方法
在文件路径处理中,相对路径的概念取决于我们选择的”基准点”(即参考的起始点)。默认情况下,许多程序和工具(包括Jupyter Notebook)会将”当前工作目录”(即当前执行文件的目录)作为路径解析的起点。这种设计在单文件项目中工作良好,但在大型项目中可能会导致路径引用混乱。
举个例子:
假设你有以下文件结构:
| 1 | test | 
假设你有一个项目,其中:
- 根目录为 test,下面有projects和data两个文件夹
- 当前正在编辑 projects/notebook.ipynb和projects/demo.py
- 在这个代码中,需要通过相对路径访问 data/file.txt
- 如果项目后续扩展,可能会添加更多的子目录和文件
1. vscode中默认方式:从当前文件出发获取 data/file.txt 的相对路径
| 1 | # 代码示例 | 
这是vscode中默认的相对路径获取方法,即路径会是从当前文件(notebook.ipynb或者demo.py)所在的目录出发的来查找 data/file.txt。这种方式的主要问题是:当文件位置变动时,需要相应调整../的数量,容易导致错误。
2. 从vscode打开的项目的根目录(test)出发进行检索
vscode中提供了通过右键复制相对路径的方式,但是生成的路径默认是从当前项目的根目录test出发,而不是从当前执行文件的目录projects/notebook.ipynb进行索引,右键复制会获得以下相对路径:
| 1 | # 代码示例 | 
修改相对路径
1. 针对jupyter notebook脚本的相对路径修改
在vscode设置选项中搜索Notebook File Root,将Notebook File Root更改${fileDirname}为${workspaceFolder},这么做的意思是,jupyter notebook的文件路径会从当前打开的项目的根目录test出发,而不是从当前执行文件的目录projects/notebook.ipynb进行索引。
具体步骤:
- 打开VSCode设置(Ctrl+,)
- 搜索”Notebook File Root”
- 找到”Jupyter: Notebook File Root”选项
- 将默认值${fileDirname}改为${workspaceFolder}
- 重启Jupyter内核以使设置生效
2. 针对普通的python脚本的相对路径修改
在vscode设置选项中搜索Execute In File Dir,vscode中该选项默认是勾选的,将Execute In File Dir取消勾选,这么做的意思是,python脚本的文件路径会从当前打开的项目的根目录test出发,而不是从当前执行文件的目录projects/notebook.ipynb进行索引。
具体步骤:
- 打开VSCode设置(Ctrl+,)
- 搜索”Execute In File Dir”
- 找到”Python > Terminal: Execute In File Dir”选项
- 取消勾选此选项
- 重启VSCode终端以使设置生效
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 高利明的空间!
 评论



