文件打开
语法:
open(filename,mode,encoding='')
解释:
filename:代表你要访问的文件名
mode:这里代表你打开文件的模式,有 只读,写入,读写,追加等模式;默认为只读模式。
encoding:编码与解码的方式
编码:'字符串'---------encode---------》bytes
解码:bytes---------decode---------》'字符串'
打开文件的不同模式见下表
注意: b的方式不能指定编码,比如f=open('test11.py','rb',encoding='utf-8')是不对的
文件的操作方法
文件的常用方法有13种,如下图
注意:read(3)代表读取三个字符,其余的关于光标移动的方法都是以字节为单位,如seek,tell,truncate
seek方法深入
seek函数语法:
fileObject.seek(offset, whence)
- offset:光标开始的偏移量,也就是代表需要移动偏移的字节数
- whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
若文件为
aaa
123
f = open('123.txt','rb') --如果whence是1或者2模式 这里一定要加b模式 f.seek(-5,2) --如果whence是2 光标偏移量一定要是负数 print(f.read())
结果:b' 123' --win下回车是 ,linux下是
需求:读取文件的最后一行
方法一:
f = open('123.txt','rb') date = f.readlines() print(date[-1].decode()) --这种方法不好,还是把整个文件读取并存入内存
方法二:
f=open('d.txt','rb') --核心思想是:先假设一个偏移量,然后不断加大,不断从文件末尾seek这个偏移量,直到读出最后两行,然后data[-1]就是最后一行 for i in f: --循环文件的推荐方式,一行一行给 offs=-3 n=0 while True: f.seek(offs,2) data=f.readlines() --读取当前光标到文件末尾的内容 if len(data) > 1: print('最后一行',data[-1]) break offs*=2