1.打开文件
1.open()
open()常用参数:
参数名称 | 意义 |
file | 位置参数,要打开文件的路径 |
mode | 关键字参数,打开文件的模式 |
encoding | 关键字参数,编码格式 |
参数详解:
1.file
file代表我们要打开的文件,可以使用绝对路径或相对路径
(1)当我们要打开的文件与程序不在同一个级文件夹下,则使用绝对路径:
在test.py文件中打开a\a.txt,代码如下(伪代码):
open(r"D:\a\a.txt")
或
open("D:/a/a.txt")
注意事项:
1.为了避免错误,在路径前加r,因为\在python中还有转义的意思,r是rawstring,会显示原生的字符串
2.将\换为/,系统默认\表示文件目录,但在此我们也可以用/
3.相对路径是文件完整的路径,相对路径定位文件准确,但可能前缀过长让代码看起来冗余
(2)当我们要打开的文件与程序所在文件在同一级文件夹下,使用相对路径
在test.py中打开b\a.txt和b\c\e.txt,代码如下(伪代码):
open("a.txt")
open(r"c\e.txt")
注意事项:
1.要打开的文件一定与程序在同一级文件夹下,如果不在就会报错
2.mode
打开文件有两种模式,t(文本模式)和b(字节),必须要和操作文件模式连用,默认模式是rt
t模式的特点:
- 读写都是以str为单位
- 读写的都是文本文件,操作文本文件时很方便
- 要指定encoding
b模式的特点
- 读写都是以bytes为单位
- 可以读写任何文件,更通用
- 不指定encoding
3.encoding
文件中的数据本质上是存在硬盘,在硬盘中是某种编码格式的二进制数据,那我们读出来的也是二进制数据,所以要进行解码,指定了encoding后,python就会自动帮我们按照encoding参数进行解码,如果不指定,就会按照我们操作系统的编码类型进行解码。
看一个错误示范,代码如下:
f = open("a.txt",mode="rt",)
ret = f.read()
print(ret)
运行结果:
我的电脑是windows操作系统,默认编码格式是gbk,而这个a.txt文件的编码格式设置成utf-8,这样的话肯定无法解码
我们加上encoding,再试一试:
f = open("a.txt",mode="rt",encoding="UTF-8")
ret = f.read()
pritn(ret)
运行结果如下:
注意:encoding一定要和文件的编码格式相同
2.关闭文件
操作系统能打开的文件个数是一定的的,而且如果只是打开文件操作完后却不关闭会白白浪费我们的内存,所以一定要记得关闭文件。
1.手动关闭
f = open("a.txt",mode="rt",encoding="UTF-8")
ret = f.read()
pritn(ret)
f.close() #关闭文件
2.with(自动关闭)
with更加人性化一点,with语句结束后会帮我们自动关闭文件
with open("a.txt",mode="rt",encoding="UTF-8") as f:
ret = f.read()
pritn(ret)
来验证一下with的自动关闭:
with open("a.txt",mode="rt",encoding="UTF-8") as f:
ret = f.read()
pritn(ret)
f.read()
结果如下: