解决VSCode无法识别相对路径的问题

前言:

近日在学习python文件操作时,发现使用VSCode作为编辑器时,文件的相对路径会出问题,报错"指定路径下找不到文件",无法找到想要的文件。

知识点①:不同操作系统所使用的路径斜杠不同:Linux系统是/,Windows系统是\

知识点②:在使用相对路径表示【某源代码文件】所在的位置时,使用 ./ 表示当前所在目录,使用 ../ 表示当前所在目录的父目录。

问题:

这里先贴上笔者使用相对路径的 Python 代码段:

python 复制代码
# 该代码片段位于 draw_chart.py 文件中
chart_title = '1836A'
file_path = f"../pending_files/{chart_title}.xlsx"   # 欲使用相对路径引用 1836A.xlsx 文件

再列出笔者的工程目录树

Python_project

└─ .vscode

│ ├─ launch.json

│ └─ settings.json

├─ app_sample

│ └─ draw_chart.py

├─ pending_files

│ └─ 1836A.xlsx

在基于以上的情况下,出现了相对路径报错的问题。报错提示如下图所示:

🌵 解决方案(一)

修改要点 :将相对路径引用的代码段修改成当前目录引用,即../改成./,如下所示。

python 复制代码
# 该代码片段位于 draw_chart.py 文件中
chart_title = '1836A'
file_path = f"./pending_files/{chart_title}.xlsx"   # 欲使用相对路径引用 1836A.xlsx 文件

修改后可正常运行,问题解决。

修改原理 :因为此时相对路径的【参照位置】,是打开的"工程项目文件夹",不是源代码文件目录所在位置。

以笔者的工程项目Python_project为示例,此时相对路径的【参照位置】是当前目录Python_project文件夹,不是app_sample!!!

则相对路径"./pending_files/{chart_title}.xlsx"等价于

绝对路径"E:/code/Python_project/pending_files/1836A.xlsx"。

🌵 解决方案(二)

修改要点1 :首先我们不修改相对路径的引用,即代码段保持../不变。

python 复制代码
# 该代码片段位于 draw_chart.py 文件中
chart_title = '1836A'
file_path = f"../pending_files/{chart_title}.xlsx"   # 欲使用相对路径引用 1836A.xlsx 文件

修改要点2 :其次使用UI形式设置,依次打开 设置→搜索execute→勾选 Execute in file Dir 选项,如下图所示:

或者使用json文本形式设置,即在settings.json中添加"python.terminal.executeInFileDir": true,,如下图所示:

上述两者效果是一致的,VSCode有UI和json文本两种形式设置,任选一种即可,笔者推荐json文本形式设置。

最后运行Python代码,可以看到正常运行,问题解决。

修改原理 :此时相对路径的【参照位置】,是"当前源代码的文件目录"。

以笔者的工程项目Python_project为示例,此时相对路径的【参照位置】是app_sample

则相对路径".../pending_files/{chart_title}.xlsx"等价于

绝对路径"E:/code/Python_project/pending_files/1836A.xlsx"。

📚参考链接

VScode - 相对路径

[报错] VSCODE无法识别相对路径

绝对路径和相对路径区别详解

什么是相对路径?相对路径的具体写法和用法

Python绝对路径和相对路径详解

相关推荐
冬奇Lab1 小时前
一天一个开源项目(第14篇):CC Workflow Studio - 可视化AI工作流编辑器,让AI自动化更简单
人工智能·开源·编辑器
开源技术2 小时前
Python GeoPandas基础知识:地图、投影和空间连接
开发语言·ide·python
暴走十八步3 小时前
PHP+vscode开启调试debug
开发语言·vscode·php
承渊政道3 小时前
Linux系统学习【Linux基础开发工具】
linux·运维·笔记·学习·centos·编辑器
you-_ling4 小时前
IO编程相关知识
c语言·vscode
学嵌入式的小杨同学12 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
寻梦csdn16 小时前
pycharm+miniconda兼容问题
ide·python·pycharm·conda
徐小夕@趣谈前端18 小时前
Web文档的“Office时刻“:jitword共建版2.0发布!让浏览器变成本地生产力
前端·数据结构·vue.js·算法·开源·编辑器·es6
电饭叔19 小时前
Jupyter学习中的问题--FileNotFoundError
ide·学习·jupyter
noBt20 小时前
Windows IDEA 卡顿严重
java·ide·intellij-idea