什么是Python的相对路径

描述

    1. 知识回顾
    1. 什么是相对路径
    1. 相对路径的语法
    1. 查看相对路径的方法
    1. 写出所有txt文件的相对路径
    • 5.1 同目录
    • 5.2 上级目录
    1. 用相对路径读取txt文件
    • 6.1 读取旅游.txt
    • 6.2 读取旅游经费.txt
    • 6.3 读取笔记.txt和new.txt
    • 6.4 读取目标.txt文件
    1. 上2级目录
    • 7.1 同级目录
    • 7.2 上级目录
    • 7.3 上2级目录
    • 7.4 有分支的上级目录
    1. 总结

1. 知识回顾

绝对路径是指文件在硬盘上真正存在的路径。

就是从盘符(C盘、D盘、E盘、F盘)开始一直到文件所在的具体位置。

绝对路径 = 邮寄地址

绝对路径就相当于生活中的邮寄地址,邮寄地址总是从省份开头,然后到市县、到街区再到具体门牌号。

武汉大学的地址是:湖北省武汉市武昌区八一路299号。这就是一个绝对路径,通常是邮寄东西才会用的地址。

2. 什么是相对路径

相对路径 = 打车地址

相对路径的相对,顾名思义就是相对某个参考对象而言的。

假设你本人已经在武汉市,你打车的时候你会跟司机说去武汉大学,或者说是去武昌区八一路。

你肯定不会跟司机说去湖北省武汉市某某地方,省份和市通常是被你省略了。

Python中的相对路径基本等同于打车地址这一概念。

相对路径是针对当前文件夹这一参考对象,来描述文件路径的形式。

当前文件夹是指我们编程使用的编辑器打开的文件夹。

【温馨提示】

我刚开始接触相对路径的时候,总是以打开的py文件为参考对象,相对路径总是报错。

后来琢磨了下,才发现,当前文件夹不是指py文件所在的文件夹,是指编辑器打开的文件夹。

3. 相对路径的语法

相对路径使用两个特殊符号表示:点(.) 和双点(..)。

一个点. 表示文件或文件夹所在的当前目录。

两个点.. 表示当前目录的上一级目录。

上n级就用n个.. 表示。

找相对路径的重点在于找到编辑器打开的文件夹。

4. 查看相对路径的方法

我用的是vscode编辑器,相对路径的参考对象就是我的编辑器打开的文件夹。

现在,我用vscode打开名为生活的文件夹。

文件

68-1打开文件夹

选择生活文件夹。

文件

68-2生活

这一步很重要,vscode打开的文件夹不同,则相对路径就不同。

  1. 单击vscode编辑器左上角的资源管理器,下面会出现一个当前文件夹的文件目录;
  2. 鼠标右键点击旅游.txt文件;
  3. 点击复制相对路径,就能得到旅游.txt文件的相对路径,如下所示:
旅游.txt

文件

68-3复制相对路径

【备注】

在当前文件夹下,vscode省略了.\\,所有才得到了上面的相对路径。

.\\是可以省略的。

.\\要不要程序都不会报错,大家根据自己的习惯编写即可。

旅游.txt文件的相对路径完整的表述如下所示:

.\\旅游.txt

【语法解析】

.\\表示当前文件夹,即.\\指代生活文件夹。

同样的方法,查看旅游经费.txt的相对路径,如下所示:

年度预算\\旅游经费.txt

旅游经费.txt文件的相对路径完整的表述如下所示:

.\\年度预算\\旅游经费.txt

5. 写出所有txt文件的相对路径

【准备工作】

年度预算文件夹里新建一个绝对.py文件。

【写相对路径】

当前我打开的文件夹为生活,即当前目录为生活

那我们要编辑的所有文件的相对路径就是相对于生活文件夹来确定的。

文件

68-4当前文件夹

5.1 同目录

旅游.txt和旅游经费.txt文件都在生活文件里,即在当前目录下,相对路径用.\\表示:

旅游.txt的相对路径为:.\\旅游.txt

旅游经费.txt的相对路径为.\\年度预算\\旅游经费.txt

5.2 上级目录

笔记.txt和new.txt在安迪文件夹中,安迪文件夹是生活文件的上一级,是上层目录,相对路径用..\\表示:

笔记.txt的相对路径为..\\笔记.txt

new.txt的相对路径为..\\\\new.txt

目标.txt文件在安迪文件夹下的工作文件夹里,安迪文件夹同样是上层目录,相对路径同样用..\\表示:

目标.txt的相对路径为:..\\工作\\目标.txt

6. 用相对路径读取txt文件

6.1 读取旅游.txt

在绝对路径中,一个点. 表示文件所在的当前目录。

当前我打开的文件夹为生活,即当前目录为生活

旅游.txt就在当前生活文件夹,因此相对路径为.\\旅游.txt

读取旅游.txt代码如下:

txt = open ('.\\旅游.txt',encoding='utf-8')
print(txt.read())

【终端输出】

我想去西藏!

在当前文件夹下,.\\可以省略:

txt = open ('旅游.txt',encoding='utf-8')
print(txt.read())

【终端输出】

我想去西藏!

6.2 读取旅游经费.txt

当前我打开的文件夹为生活,即当前目录为生活

旅游经费.txt在当前生活文件夹里的年度预算文件夹里,因此相对路径为.\\年度预算\\旅游经费.txt

读取旅游经费.txt代码如下:

txt = open ('.\\年度预算\\旅游经费.txt',encoding='utf-8')
print(txt.read())

【终端输出】

旅游经费2万元。

在当前文件夹下,.\\可以省略:

txt = open ('年度预算\\旅游经费.txt',encoding='utf-8')
print(txt.read())

【终端输出】

旅游经费2万元。

6.3 读取笔记.txt和new.txt

笔记.txt和new.txt在安迪文件夹中,安迪文件夹是生活文件的上一级,是上层目录,相对路径用..\\表示:

笔记.txt的相对路径为..\\笔记.txt

txt = open ('..\\笔记.txt',encoding='utf-8')
print(txt.read())

【终端输出】

这是我的第300篇笔记!

读取new.txt

txt = open ('..\\\\new.txt',encoding='utf-8')
print(txt.read())

【终端输出】

路径里含有转义字符,程序会报错!

\\n会被认为成转义字符,要多加一个反斜杠\\,即为\\\\

6.4 读取目标.txt文件

目标.txt文件在安迪文件夹下的工作文件夹里,安迪文件夹同样是上层目录,相对路径同样用..\\表示:

目标.txt的相对路径为:..\\工作\\目标.txt

txt = open ('..\\工作\\目标.txt',encoding='utf-8')
print(txt.read())

【终端输出】

2023年的目标是新增1万个关注者!

这里的..\\指代安迪文件夹。

7. 上2级目录

刚才我们的编辑器打开的是生活文件夹,我们是在路径.py中编写代码。

我们现在更换打开的文件夹。

用vscode编辑器打开年度预算文件夹,在绝对.py文件中编写代码。注意观察相对路径的变化。

文件

68-5年度预算

7.1 同级目录

旅游经费.txt和年度预算在同一个文件夹里,属于统计目录,用.\\表示:

txt = open ('.\\旅游经费.txt',encoding='utf-8')
print(txt.read())

【终端输出】

旅游经费2万元。

7.2 上级目录

旅游.txt文件是在生活文件夹里,相对于年度预算文件夹,是上级目录,用..\\表示:

txt = open ('..\\旅游.txt',encoding='utf-8')
print(txt.read())

【终端输出】

我想去西藏!

7.3 上2级目录

笔记.txt和new.txt相对于年度预算文件夹而言,在上级文件夹生活的上级文件夹安迪里,我称为上2级目录,上2级目录,用两个..\\表示:

txt = open ('..\\..\\笔记.txt',encoding='utf-8')
print(txt.read())

【终端输出】

这是我的第300篇笔记!

\\n会被程序默认为转义字符,记得多加一个反斜杠\\,即改写为\\\\

txt = open ('..\\..\\\\new.txt',encoding='utf-8')
print(txt.read())

【终端输出】

路径里含有转义字符,程序会报错!

7.4 有分支的上级目录

目标.txt文件夹是在年度预算文件夹的上2级目录下的工作文件夹,我把这种情况称为有分支,有分支的情况下多添加一个分支的文件夹名即可。

txt = open ('..\\..\\工作\\目标.txt',encoding='utf-8')
print(txt.read())

【终端输出】

2023年的目标是新增1万个关注者!

8. 总结

.\\表示当前目录,指的是当前文件夹,打开的是生活文件夹,.\\就代表生活;打开的是年度预算文件夹,.\\就代表年度预算

..\\表示上一级目录,以打开年度预算文件夹为例,..\\就表示年度预算文件夹的上级文件夹生活

..\\..\\表示上2级目录,以打开年度预算文件夹为例,第1个..\\代表的是上2级的文件夹安迪,第2个..\\代表的上级文件夹生活

【错误提示】

txt = open ('..\\生活\\旅游.txt',encoding='utf-8')
print(txt.read())

这是部分初学者会犯的错误。

初学者认为..\\表示上一级,然后再写上级目录的文件夹名称生活

上述代码错误的地方在于多添加了\\生活

大家注意,..\\就已经指代了生活文件夹,只有有分支的情况下,才会写文夹名称。

大家可以理解成直系亲属是直接用..就能指代的。

只有旁系亲属才需要写文件夹名称

相对路径的概念初学者会有点迷茫,但使用vscode的同学可以直接查看,多试几次就明白了。

相对路径的概念很重要,当爬虫的时候通常要保存的文件都使用相对路径,你不理解相对路径,可能就找不到你爬到的文件了哦!文件

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分