seek 默认模式是从文件的开始移动光标,一共有0.1.2三种模式
f=open('seek.txt','r',encoding='utf-8') print(f.tell()) f.seek(10,0) #0代表的就是从文件开头移动光标 这是默认的 print(f.tell()) f.seek(3,0) print(f.tell())
f=open('seek.txt','rb') #如果使用seek的其他模式有必须要使用b的模式 print(f.tell()) f.seek(10,1) #1代表相对位置,相对于上一次的光标这一次怎么移动 print(f.tell()) f.seek(3,1) print(f.tell())
f=open('seek.txt','rb') #有什么用? print(f.tell()) f.seek(-5,2) #2代表从文件末尾开始移动光标 print(f.read()) #读是读光标后面的内容 print(f.tell())
f=open('日志文件','rb') for i in f.readlines(): #用readlines就是把所有的内容给一下都调到内存,等于用渔网弄上来所有的鱼 print(i) #循环文件的推荐方式 for i in f: #用f就是一条条的拿鱼上来,但是这里是从正方向一条条的拿,而我们要从后开始拿,所以倒过来拿 print(i)
f=open('日志文件','rb') #这一部分代码的意思就是你有很多条日志,但是你要得到最新的一条日志,也就是你文件中最后一行日志该怎么操作
for i in f:
offs=-10 while True: f.seek(offs,2) #从最后开始读取 data=f.readlines() if len(data) > 1: #只要光标的位置是在最后一行之上便可得到最后一行 如果没有则要继续增大offs值 print('文件的最后一行是%s' %(data[-1].decode('utf-8'))) break offs*=2