Python 绝对路径与相对路径

文件的读写操作

 

 

1.Python 绝对路径与相对路径

 

 

1.1 准备工作

 

 

第1步:对照下图,新建文件和文件夹:

 

 

1_file

 

 

(1) 在桌面新建文件夹,命名为file。
(2) 在file文件夹中新建2个文件夹,分别命名为a_file, b_file。
(3)在file文件夹中新建1个txt文件,命名为xxx.txt,在xxx.txt 文件中写入“好好学习,天天向上!!!”。
(4)在a_file文件夹中新建1个txt文件,命名为aaa.txt,在aaa.txt 文件中写入“恭喜你,文件读取成功!!!”。
(5)在b_file文件夹中新建c_file文件夹,在c_file文件夹新建一个ccc.txt文档,在文档中写入“今天星期六!!!”。
(6)在b_file文件夹中新建1个txt文件,命名为bbb.txt,在bbb.txt 文件中写入“今天下雨了!!!”。
(7)在b_file文件夹中新建1个b.py文件。

 

 

第2步:用vscode打开b_file文件夹

 

 

注意用相对路径只能打开b_file文件夹,否则后面的代码会报错!!!
但是用绝对路径打开文件时,可以不限制打开的文件夹。

 

 

1.2 绝对路径

 

 

1.什么是绝对路径

 

 

在Python读取文件时,我们首先需要知道文件的路径,即存储位置。
就像人工手动打开文件一样,首先你要知道文件存储在c盘或d盘的具体位置。

 

 

Python的文档路径有两种表述方式:
第1种是绝对路径:就是从盘符(c盘、d盘)开始一直到文件所在的具体位置。
绝对路径就是文件或文件夹在硬盘上的完整路径。
在 Windows 系统中,绝对路径是以磁盘名称开头,如 C: 或者 D: ,具体的文件或文件夹名称做结尾。
例如:xxx.txt 文件的绝对路径为:
"C:\Users\xiaoyuzhou\Desktop\file\xxx.txt" 
绝对路径是唯一的,只有一个。

 

 

2.查看绝对路径的方法有2种

 

 

方法1:点击文件上方的搜索栏;

 

 

2_点击搜索栏

 

 

方法2:鼠标点击文件xxx.txt,然后按住【shift】,再点击鼠标右键,最后点击【复制文件地址】。

 

 

3_复制文件地址

 

 

3.用绝对路径打开文件
首先打开b.py 文件,在b.py 文件中输入下面的代码。
用绝对路径打开文件,可以不限制打开的文件夹。

 

 

# 用绝对路径打开xxx.txt   
txt = open (
"C:\\Users\\xiaoyuzhou\\Desktop\\file\\xxx.txt", 
encoding='utf-8') 
print(txt.read())
 

【终端输出】 好好学习,天天向上!!!

 

 

因为图片显示不全,所以代码里我有换行,大家编写时候不用换行。

 

 

4.代码解析
open 是一个Python的内置函数,作用是打开文件,函数里面有2个参数;
第1参数是文件的绝对路径:C:\Users\xiaoyuzhou\Desktop\file\xxx.txt";
第2参数是文件编码格式:encoding='utf-8';

 

 

read 也是一个Python的内置函数,作用是读取整个文件,并将读取到的文件内容存放到一个字符串变量中。
open 函数后面会有详细的介绍,这里仅做了解。

 

 

5.注意事项:改写绝对路径时加一个\

 

 

xxx.txt 文件的的绝对路径原本为:
"C:\Users\xiaoyuzhou\Desktop\file\xxx.txt"

 

 

通过对比两个路径,发现我把绝对路径的单反斜杠统一写成了双反斜杠,然后放到参数中。
为什么要写成双反斜杠呢?
因为在Python中,有转义字符的语法,【\】+字母能实现特殊的功能。

 

 

4_转义字符

 

 

上述代码中,如果不加双反斜杠,\f 就会被ptyhon当做转义符号处理,程序会报错,如下面的代码:

 

 

# 使用单反斜杠,\f 被当做转义字符,程序报错 
txt = open (
     ,
    encoding=) 
 

【程序报错】

 

 

SyntaxError: (unicode error) 'unicodeescape' codec 
can't decode bytes in position 2-3:
truncated \UXXXXXXXX escape

 

 

1.3 相对路径

 

 

1. 什么是绝对路径
“相对路径”就是针对“当前文件夹”这一参考对象,来描述文件路径的形式。
相对路径使用..\\ .\\表示。
一个点 表示文件或文件夹所在的当前目录。
两个点..\\表示当前目录的上一级目录。
上n级就用n 个表示。

 

 

2. 任务1:在b.py里打开同一个文件夹里的文件:bbb.txt。

 

 

首先用vscode 打开b_file文件夹。
然后打开b.py文件。
注意:用相对路径只能打开b_file文件夹,否则后面的代码会报错!!!

 

 

人工操作:在b.py 文件下,要打开bbb.txt 文件:直接点击bbb.txt 文件即可。

 

 

5_file

 

 

大家观察上面的文件流程图,发现b.py 和bbb.txt 位置一样,即在同一文件夹里。
绝对路径中一个点
那么相对于b.py 而言,bbb.txt 的相对路径为:.\\bbb.txtbbb.txt
因为可以省略不写。
注意路径参数必须有后缀名.txt。

 

 

2.1同文件夹绝对路径省略点:bbb.txt

 

# 在b.py里打开同文件夹文件:bbb.txt
txt = open ('bbb.txt',encoding=)

 

 

【终端输出】

 

今天下雨了!!!

 

2.2同文件夹绝对路径不省略点:.\bbb.txt

 

 txt = open ('.\\bbb.txt',encoding=)
 

3. 任务2:在b.py里打开下一层次的文件:ccc.txt

 

 

6_下级file

 

 

大家观察上面的文件流程图,发现ccc.txt在b.py 的下一级目录里。
和b.py同级的是c_file 文件夹。
那么相对于b.py 而言,ccc.txt 的相对路径为:.\\c_file\\ccc.txtc_file\\ccc.txt
可以省略不写。

 

 

人工操作:现在打开的是b.py 文件,在打开b.py文件下,要打开 ccc.txt,首先打开c_file,然后打开ccc.txt 文档即可。(大家按照人工打开的方式操作就能理解)

 

 

省略.\

 

 

# 在b.py里打开下一层次的文件:ccc.txt。
txt = open ('c_file\\ccc.txt',encoding=)

 

今天星期六!!!

 

 

不省略.\

 

 

txt = open ('.\\c_file\\ccc.txt',encoding=)

 

 

4. 任务3:在b.py里打开上一层次的文件:aaa.txt

 

 

7_上级file

 

 

大家观察上面的文件流程图,发现aaa.txt在b.py 的上一级目录里。
两个点
那么相对于b.py 而言,aaa.txt 的相对路径为:..\\a_file\\aaa.txt
人工操作:现在打开的是b.py 文件,文件所在的目录是b_file 文件夹,要打开aaa.txt,往回退一步,找到a_file 文件夹,在点击aaa.txt 即可。
文件夹往上走(后退)一次,就用1个
..\不能省略。

 

 

# 任务3:在b.py里打开上1级的文件:aaa.txt。  
txt = open ('..\\a_file\\aaa.txt',encoding=)
print(txt.read())  

 

 

 

恭喜你,文件读取成功!!!

 

 

4. 任务4:在b.py里打开上2个层次的文件:描述文档.txt

 

 

准备工作:在电脑桌面新建一个名为【Python笔记新】文件夹,里面新建【第9章 文件读写】文件夹,里面新建【文件路径】文件夹,里面新建【相对路径】文件夹,里面新建【描述方式.txt】文档,文档中输入内容“文件夹往上走几层就用几个..\ 。”

 

 

描述方式.txt 文档绝对路径为:
"C:\Users\xiaoyuzhou\Desktop\Python笔记新\第9章 文件读写\文件路径\相对路径\描述方式.txt"

 

 

b.py 文件绝对路径为:
"C:\Users\xiaoyuzhou\Desktop\file\b_file\b.py"

 

 

观察上述2个绝对路径,发现两个文档绝对路径有相同的部分,即都在C:\Users\xiaoyuzhou\Desktop下。

 

 

人工操作:我们现在打开的是b.py 文件,b.py 文件所在的目录为b_file文件夹。要打开 ,首先我们往回退2次:
第1次:回到file文件夹;第2第:退到Desktop。然后打开桌面的Python笔记新文件夹,依次往下打开文件,就能找到 文档。

 

 

操作中,我们往回退了2次,所以表述时需要用两个 。
是用来表示回退的次数。

 

txt = open (
'..\\..\\
Python笔记新\第9章 文件读写\文件路径\相对路径\描述方式.txt',
encoding=)

 

 

文件夹往上走几层就用几个..\\ 。

 

 

1.4 相对路径的写法

 

 

相对路径一开始我也很难理解,后来查阅一些资料,也咨询了一些朋友,得出下面的结论,不一定准确,仅供大家参考。
我个人理解的相对路径写法就是用.\\ 代替2个文件绝对路径的共同部分。
..\ 表是文件夹往上走。往上走几层,就用几个
.\ 表示文件是同层或者往下走。

 

# b.py  xxx.txt 文件绝对路径如下  
# "C:\Users\xiaoyuzhou\Desktop\file\b_file\b.py"
# "C:\Users\xiaoyuzhou\Desktop\file\xxx.txt" 
# xxx.txt在b.py的上级 
txt = open ('..\\xxx.txt',encoding=)

 

 

好好学习,天天向上!!!

 

 

# b.py  aaa.txt 文件绝对路径如下  

# "C:\Users\xiaoyuzhou\Desktop\file\a_file\aaa.txt"
# aaa.txt在b.py的上级 
txt = open (,encoding=)

 

 
# b.py  bbb.txt 文件绝对路径如下  

# "C:\Users\xiaoyuzhou\Desktop\file\b_file\bbb.txt"
# bbb.txt和b.py同级
txt = open (,encoding=)
 

 

# b.py  ccc.txt 文件绝对路径  

# "C:\Users\xiaoyuzhou\Desktop\file\b_file\c_file\ccc.txt"
# ccc.txt 在b.py的下一级
txt = open (,encoding=)
 

 

# b.py 描述方式.txt 文件绝对路径  

# "C:\Users\xiaoyuzhou\Desktop\Python笔记新\第9章 文件读写\文件路径\相对路径\描述方式.txt"
# b.py往上走2层可以走到共同的Desktop
txt = open (
'..\\..\\Python笔记新\第9章 文件读写\文件路径\相对路径\描述方式.txt',encoding=)
 

 

1.5 相对路径的作用

 

 

当我们要把代码共享个其他人的时候,如果代码里用的是绝对路径,大家的用户名通常不一样,就会导致路径不一样,大家拿到代码还需要修改路径才能正常运行。
但连同文件一起拷贝,使用相对路径表述不用修改就可以正常运行。
相对路径通常用于存储在一起的文档,如果两者跨层较大,还是选用绝对路径。

 

 

1.6 总结

 

转自:https://baijiahao.baidu.com/s?id=1728604012300379495&wfr=spider&for=pc

 

 
posted @ 2022-06-28 10:35  韩、饭饭  阅读(1642)  评论(0编辑  收藏  举报