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

部署运行你感兴趣的模型镜像

前言:
近日在学习Python文件操作,发现使用VSCode作为编辑器时,文件的相对路径会出问题,提示报错“指定路径下找不到文件”。

知识点①:不同操作系统所使用的路径斜杠不同,Linux系统是/,Windows系统是\
知识点②:相对路径使用 ./ 表示【当前文件所在目录】,使用 ../ 表示【当前文件所在目录】的父目录,即上一级目录。一般地,【当前文件所在目录】我们也称为【参照位置】。

问题:
笔者欲在draw_chart.py编码文件里调用处理1836A.xlsx文件。
这里先贴上笔者在draw_chart.py中调用 相对路径 的 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

笔者的工程视图:
在这里插入图片描述
在基于以上的情况下,出现了相对路径报错的问题。报错提示如下图所示:
在这里插入图片描述
🌵 解决方案(一)
修改要点:将相对路径引用的代码段修改成当前目录引用,即../改成./,如下所示。

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

修改后可正常运行,问题解决。
在这里插入图片描述

修改原理
important:在VSCode的默认配置中,相对路径的【参照位置】是打开的“工程项目文件夹”,不是draw_chart.py源代码文件目录所在位置。
以笔者的工程项目Python_project为示例,此时相对路径的【参照位置】是项目文件夹Python_project,不是app_sample!!!
所以此时的相对路径./pending_files/{chart_title}.xlsx等价于绝对路径E:/code/Python_project/pending_files/1836A.xlsx

🌵 解决方案(二)
我们要将相对路径的【参照位置】,从打开的 “工程项目文件夹” 修改到 “当前源代码文件目录” 。
修改要点1:首先我们不修改相对路径的引用,即代码段保持../不变。

# 该代码片段位于 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代码,可以看到正常运行,问题解决。
在这里插入图片描述

修改原理:此时相对路径的【参照位置】,是“当前源代码draw_chart.py所在的文件目录”。
以笔者的工程项目Python_project为示例,由于需要调用相对路径的代码存在于draw_chart.pydraw_chart.py在app_sample文件夹下,此时相对路径的【参照位置】是app_sample
所以相对路径../pending_files/{chart_title}.xlsx等价于 ../先从当前目录app_sample回退到父目录Python_project,再跟上/pending_files/{chart_title}.xlsx,最终的绝对路径是E:/code/Python_project/pending_files/1836A.xlsx

📚参考链接
VScode - 相对路径
[报错] VSCODE无法识别相对路径
绝对路径和相对路径区别详解
什么是相对路径?相对路径的具体写法和用法
Python绝对路径和相对路径详解

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值