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 许可协议。转载请注明来源 高利明的博客!
评论