文件的三种打开模式
文件的基本操作方式有三种:
r模式:read
w模式:write
a模式:append
文件读写内容的格式有两种:
t模式:text
b模式:bytes
文件的打开模式需要和文件读写的格式一起使用,比如通过read模式读取文件需要指定是以text还是以二进制的方式读取文件,如果不指定默认是t模式。
文件的绝对路径与相对路径
文件的绝对路径是从盘符开始的路径,相对路径是从当前执行文件所在的文件夹开始的路径,在open函数中文件的路径可以写相对路径也可以写绝对路径。
with管理文件上下文
打开文件我们使用with open而不使用open,因为open方法只打开文件而不负责关闭文件,而with 提供了一种自动关闭文件的机制,在文件运行结束后可以自动关闭文件。
一、r模式
readable()判断文件是否可读,返回bool值,不过该方法只能判断文件是否可读,如果文件不存在会报错。
read模式是只读模式,如果指定打开的文件不存在会报错。
with open('1.text','r',encoding='utf8') as fr:
content = fr.read()
print(content)
.read()方法会一次将所有的文件全部读入到内存,如果文件较大会导致内存占用过大的问题,为了避免这种情况的出现我们可以用.readline()逐行读取内容,readline()的特点是每调用一次读取一行,文件是迭代器对象,每调用一次都会接着前面的内容继续迭代。
with open('1.text','r',encoding='utf8') as fr:
for i in range(10):
print(fr.readline())
readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。
如果碰到结束符 EOF 则返回空字符串。
with open('1.text','r',encoding='utf8') as fr:
for line in fr.readlines():
lin = line.strip()#我们可以通过for循环对文本内容进行处理
print(lin)
read和readline可以指定读取的内容的长度,如read(3),就是读取三个字符。readlines则会以列表的形式将换行符前面的所有内容读出来(始终括号内数字的长度小于读取内容的长度)。
二、w模式
write模式是只写模式,该模式打开文件时会先将文件里的内容删除,然后再写入,如果文件不存在就将自动创建一个文件然后再将内容写入。
with open('2.text','w',encoding='utf8') as fw:
fw.write(content1)
三、a模式
append模式是和write模式类似,相同点是都是只写,且如果文件不存在都会先创建文件然后再写入。不同点是append不会删除已存在的文件内容,而是在已存在的内容后面写入内容。
with open('2.text','a',encoding='utf8') as fa:
fa.write(content1)
四、文件二进制方式读取文件
上面文件的读写都是text模式下的,下面我们了解一下b模式下文件的读取,b模式对文件的格式没有要求,不论是文本文件还是视频音频都可以采用b模式进行读取,由于b模式是采用二进制的方式对数据进行的读写操作所以不能设置编码格式,如果我们用b模式去读取文件,就要用b模式去写入文件这样才能完好的还原我们所读取的数据。
with open('1.text','rb') as fr:
content1 = fr.read()
with open('2.text','ab') as fa:
fa.write(content1)