(七)文件处理

 

文件打开

语法:

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'\r\n123' --win下回车是\r\n,linux下是\n

需求:读取文件的最后一行

方法一:

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

猜你喜欢

转载自www.cnblogs.com/xulan0922/p/9752086.html