第九章 文件的读写操作9.1 Python 绝对路径与相对路径9.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文件夹,否则后面的代码会报错!!!

但是用绝对路径打开文件时,可以不限制打开的文件夹。

9.1.2 绝对路径

1.什么是绝对路径

在Python读取文件时,我们首先需要知道文件的路径,即存储位置。

就像人工手动打开文件一样,首先你要知道文件存储在c盘或d盘的具体位置。

Python的文档路径有两种表述方式:

第1种是绝对路径:就是从盘符(c盘、d盘)开始一直到文件所在的具体位置。

绝对路径就是文件或文件夹在硬盘上的完整路径。

在 Windows 系统中,绝对路径是以磁盘名称开头,如 C: 或者 D: ,具体的文件或文件夹名称做结尾。

例如:xxx.txt 文件的绝对路径为:

“C:UsersxiaoyuzhouDesktopfilexxx.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:UsersxiaoyuzhouDesktopfilexxx.txt”;

第2参数是文件编码格式:encoding=’utf-8’;

read 也是一个Python的内置函数,作用是读取整个文件,并将读取到的文件内容存放到一个字符串变量中。

open 函数后面会有详细的介绍,这里仅做了解。

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

xxx.txt 文件的的绝对路径原本为:

“C:UsersxiaoyuzhouDesktopfilexxx.txt”

我在open 参数内的写的xxx.txt 文件的的绝对路径为:

“C:\Users\xiaoyuzhou\Desktop\file\xxx.txt”

通过对比两个路径,发现我把绝对路径的单反斜杠统一写成了双反斜杠,然后放到参数中。

为什么要写成双反斜杠呢?

因为在Python中,有转义字符的语法,【】+字母能实现特殊的功能。

相对路径_相对路径_相对路径

4_转义字符

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

# 使用单反斜杠,f 被当做转义字符,程序报错 
txt = open (
    "C:UsersxiaoyuzhouDesktopfilexxx.txt" ,
    encoding='utf-8'
print(txt.read())

【程序报错】

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

9.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.txt或bbb.txt。

因为.\可以省略不写。

注意路径参数必须有后缀名.txt。

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

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

【终端输出】

今天下雨了!!!

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

# 在b.py里打开同文件夹文件:bbb.txt
txt = open ('.\bbb.txt',encoding='utf-8')
print(txt.read())

【终端输出】

今天下雨了!!!

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

相对路径_相对路径_相对路径

6_下级file

大家观察上面的文件流程图,发现ccc.txt在b.py 的下一级目录里。

和b.py同级的是c_file 文件夹。

那么相对于b.py 而言,ccc.txt 的相对路径为:.\c_file\ccc.txt或c_file\ccc.txt。

.\可以省略不写。

注意路径参数必须有后缀名.txt。

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

省略.

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

【终端输出】

今天星期六!!!

不省略.

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

【终端输出】

今天星期六!!!

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='utf-8')
print(txt.read())  

【终端输出】

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

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

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

描述方式.txt 文档绝对路径为:

“C:UsersxiaoyuzhouDesktopPython笔记新第9章 文件读写文件路径相对路径描述方式.txt”

b.py 文件绝对路径为:

“C:UsersxiaoyuzhouDesktopfileb_fileb.py”

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

人工操作:我们现在打开的是b.py 文件,b.py 文件所在的目录为b_file文件夹。要打开 描述方式.txt,首先我们往回退2次:

第1次:回到file文件夹;第2第:退到Desktop。然后打开桌面的Python笔记新文件夹,依次往下打开文件,就能找到描述方式.txt 文档。

操作中,我们往回退了2次,所以表述时需要用两个..\ 。

..\ 是用来表示回退的次数。

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

【终端输出】

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

9.1.4 相对路径的写法

相对路径一开始我也很难理解,后来查阅一些资料,也咨询了一些朋友,得出下面的结论,不一定准确,仅供大家参考。

我个人理解的相对路径写法就是用..\ 或.\ 代替2个文件绝对路径的共同部分。

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

. 表示文件是同层或者往下走。

# b.py  xxx.txt 文件绝对路径如下  
# "C:UsersxiaoyuzhouDesktopfileb_fileb.py"
# "C:UsersxiaoyuzhouDesktopfilexxx.txt" 
# xxx.txt在b.py的上级 
txt = open ('..\xxx.txt',encoding='utf-8')
print(txt.read())  

【终端输出】

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

# b.py  aaa.txt 文件绝对路径如下  
# "C:UsersxiaoyuzhouDesktopfileb_fileb.py"
# "C:UsersxiaoyuzhouDesktopfilea_fileaaa.txt"
# aaa.txt在b.py的上级 
txt = open ('..\a_file\aaa.txt',encoding='utf-8')
print(txt.read())  

【终端输出】

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

# b.py  bbb.txt 文件绝对路径如下  
# "C:UsersxiaoyuzhouDesktopfileb_fileb.py"
# "C:UsersxiaoyuzhouDesktopfileb_filebbb.txt"
# bbb.txt和b.py同级
txt = open ('bbb.txt',encoding='utf-8')
print(txt.read())  

【终端输出】

今天下雨了!!!

# b.py  ccc.txt 文件绝对路径  
# "C:UsersxiaoyuzhouDesktopfileb_fileb.py"
# "C:UsersxiaoyuzhouDesktopfileb_filec_fileccc.txt"
# ccc.txt 在b.py的下一级
txt = open ('c_file\ccc.txt',encoding='utf-8')
print(txt.read())  

【终端输出】

今天星期六!!!

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

【终端输出】

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

9.1.5 相对路径的作用

当我们要把代码共享个其他人的时候,如果代码里用的是绝对路径,大家的用户名通常不一样,就会导致路径不一样,大家拿到代码还需要修改路径才能正常运行。

但连同文件一起拷贝,使用相对路径表述不用修改就可以正常运行。

相对路径通常用于存储在一起的文档,如果两者跨层较大,还是选用绝对路径。

9.1.6 总结

相对路径_相对路径_相对路径

8_绝对路径和相对路径

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注