绝对路径是指文件在硬盘上真正存在的路径。
就是从盘符(C盘、D盘、E盘、F盘)开始一直到文件所在的具体位置。
绝对路径 = 邮寄地址
绝对路径就相当于生活中的邮寄地址,邮寄地址总是从省份开头,然后到市县、到街区再到具体门牌号。
武汉大学的地址是:湖北省武汉市武昌区八一路299号
。这就是一个绝对路径,通常是邮寄东西才会用的地址。
相对路径 = 打车地址
相对路径的相对,顾名思义就是相对某个参考对象而言的。
假设你本人已经在武汉市,你打车的时候你会跟司机说去武汉大学,或者说是去武昌区八一路。
你肯定不会跟司机说去湖北省武汉市某某地方,省份和市通常是被你省略了。
Python中的相对路径基本等同于打车地址这一概念。
相对路径是针对当前文件夹这一参考对象,来描述文件路径的形式。
当前文件夹是指我们编程使用的编辑器打开的文件夹。
【温馨提示】
我刚开始接触相对路径的时候,总是以打开的py文件为参考对象,相对路径总是报错。
后来琢磨了下,才发现,当前文件夹不是指py文件所在的文件夹,是指编辑器打开的文件夹。
相对路径使用两个特殊符号表示:点(.) 和双点(..)。
一个点. 表示文件或文件夹所在的当前目录。
两个点.. 表示当前目录的上一级目录。
上n级就用n个.. 表示。
找相对路径的重点在于找到编辑器打开的文件夹。
我用的是vscode编辑器,相对路径的参考对象就是我的编辑器打开的文件夹。
现在,我用vscode打开名为生活
的文件夹。
68-1打开文件夹
选择生活
文件夹。
68-2生活
这一步很重要,vscode打开的文件夹不同,则相对路径就不同。
资源管理器
,下面会出现一个当前文件夹的文件目录;旅游.txt
文件;复制相对路径
,就能得到旅游.txt
文件的相对路径,如下所示:旅游.txt
68-3复制相对路径
【备注】
在当前文件夹下,vscode省略了.\\
,所有才得到了上面的相对路径。
.\\
是可以省略的。
.\\
要不要程序都不会报错,大家根据自己的习惯编写即可。
旅游.txt
文件的相对路径完整的表述如下所示:
.\\旅游.txt
【语法解析】
.\\
表示当前文件夹,即.\\
指代生活
文件夹。
同样的方法,查看旅游经费.txt
的相对路径,如下所示:
年度预算\\旅游经费.txt
旅游经费.txt
文件的相对路径完整的表述如下所示:
.\\年度预算\\旅游经费.txt
【准备工作】
在年度预算
文件夹里新建一个绝对.py
文件。
【写相对路径】
当前我打开的文件夹为生活
,即当前目录为生活
。
那我们要编辑的所有文件的相对路径就是相对于生活
文件夹来确定的。
68-4当前文件夹
旅游.txt和旅游经费.txt文件都在生活文件里,即在当前目录下,相对路径用.\\
表示:
旅游.txt的相对路径为:.\\旅游.txt
旅游经费.txt的相对路径为.\\年度预算\\旅游经费.txt
笔记.txt和new.txt在安迪
文件夹中,安迪文件夹是生活
文件的上一级,是上层目录,相对路径用..\\
表示:
笔记.txt的相对路径为..\\笔记.txt
new.txt的相对路径为..\\\\new.txt
目标.txt文件在安迪
文件夹下的工作
文件夹里,安迪
文件夹同样是上层目录,相对路径同样用..\\
表示:
目标.txt的相对路径为:..\\工作\\目标.txt
在绝对路径中,一个点.
表示文件所在的当前目录。
当前我打开的文件夹为生活
,即当前目录为生活
。
旅游.txt
就在当前生活
文件夹,因此相对路径为.\\旅游.txt
。
读取旅游.txt
代码如下:
txt = open ('.\\旅游.txt',encoding='utf-8')
print(txt.read())
【终端输出】
我想去西藏!
在当前文件夹下,.\\
可以省略:
txt = open ('旅游.txt',encoding='utf-8')
print(txt.read())
【终端输出】
我想去西藏!
当前我打开的文件夹为生活
,即当前目录为生活
。
旅游经费.txt
在当前生活
文件夹里的年度预算
文件夹里,因此相对路径为.\\年度预算\\旅游经费.txt
。
读取旅游经费.txt
代码如下:
txt = open ('.\\年度预算\\旅游经费.txt',encoding='utf-8')
print(txt.read())
【终端输出】
旅游经费2万元。
在当前文件夹下,.\\
可以省略:
txt = open ('年度预算\\旅游经费.txt',encoding='utf-8')
print(txt.read())
【终端输出】
旅游经费2万元。
笔记.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
会被认为成转义字符,要多加一个反斜杠\\
,即为\\\\
。
目标.txt文件在安迪
文件夹下的工作
文件夹里,安迪
文件夹同样是上层目录,相对路径同样用..\\
表示:
目标.txt的相对路径为:..\\工作\\目标.txt
txt = open ('..\\工作\\目标.txt',encoding='utf-8')
print(txt.read())
【终端输出】
2023年的目标是新增1万个关注者!
这里的..\\
指代安迪文件夹。
刚才我们的编辑器打开的是生活
文件夹,我们是在路径.py
中编写代码。
我们现在更换打开的文件夹。
用vscode编辑器打开年度预算
文件夹,在绝对.py
文件中编写代码。注意观察相对路径的变化。
68-5年度预算
旅游经费.txt和年度预算在同一个文件夹里,属于统计目录,用.\\
表示:
txt = open ('.\\旅游经费.txt',encoding='utf-8')
print(txt.read())
【终端输出】
旅游经费2万元。
旅游.txt文件是在生活
文件夹里,相对于年度预算
文件夹,是上级目录,用..\\
表示:
txt = open ('..\\旅游.txt',encoding='utf-8')
print(txt.read())
【终端输出】
我想去西藏!
笔记.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())
【终端输出】
路径里含有转义字符,程序会报错!
目标.txt文件夹是在年度预算
文件夹的上2级目录下的工作
文件夹,我把这种情况称为有分支,有分支的情况下多添加一个分支的文件夹名即可。
txt = open ('..\\..\\工作\\目标.txt',encoding='utf-8')
print(txt.read())
【终端输出】
2023年的目标是新增1万个关注者!
.\\
表示当前目录,指的是当前文件夹,打开的是生活文件夹,.\\
就代表生活
;打开的是年度预算
文件夹,.\\
就代表年度预算
。
..\\
表示上一级目录,以打开年度预算
文件夹为例,..\\
就表示年度预算文件夹的上级文件夹生活
。
..\\..\\
表示上2级目录,以打开年度预算
文件夹为例,第1个..\\
代表的是上2级的文件夹安迪
,第2个..\\
代表的上级文件夹生活
。
【错误提示】
txt = open ('..\\生活\\旅游.txt',encoding='utf-8')
print(txt.read())
这是部分初学者会犯的错误。
初学者认为..\\
表示上一级,然后再写上级目录的文件夹名称生活
。
上述代码错误的地方在于多添加了\\生活
。
大家注意,..\\
就已经指代了生活
文件夹,只有有分支的情况下,才会写文夹名称。
大家可以理解成直系亲属是直接用..
就能指代的。
只有旁系亲属才需要写文件夹名称
。
相对路径的概念初学者会有点迷茫,但使用vscode的同学可以直接查看,多试几次就明白了。
相对路径的概念很重要,当爬虫的时候通常要保存的文件都使用相对路径,你不理解相对路径,可能就找不到你爬到的文件了哦!
全部0条评论
快来发表一下你的评论吧 !