文件中seek的用法补充
Posted 容颜-gl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件中seek的用法补充相关的知识,希望对你有一定的参考价值。
绝对路径:
1 f = open(‘seek‘,‘r‘,encoding=‘utf-8‘) 2 print(f.tell()) 3 f.seek(10,0)#从起始位置开始 4 print(f.tell()) 5 f.seek(3,0) 6 print(f.tell())
运行结果:
0 10 3 Process finished with exit code 0
相对路径:
1 f = open(‘seek‘,‘rb‘)#以b方式打开 不能有encoding(冲突) 2 print(f.tell()) 3 f.seek(10,1) 4 print(f.tell()) 5 f.seek(3,1)#相对于10 6 print(f.tell())
运行结果:
0 10 13 Process finished with exit code 0
倒叙输出:
1 f = open(‘seek‘,‘rb‘) 2 print(f.tell()) 3 f.seek(-5,2)#\r\n会被读出来 读取后面五个字节 4 print(f.read())
建议循环文件的方式:
#循环文件的方式 for i in file:#一次取一行,并且方式为要一行去一行 print(i)
seek应用:
1 #需求:读取日志文件最后一条记录 2 第一种方式:【不推荐】 3 f = open(‘日志文件‘,‘rb‘) 4 data = f.readlines()#读取整个文件 作为列表 占用大量内存且无用 5 print(data[-1].decode(‘utf-8‘))
1 #大文件的最后一行读取方式(可应用于日志文件)【推荐】 2 f = open(‘seek‘,‘rb‘) 3 for i in f: 4 offs=-10#定义一个偏移量 大概每条记录的字节数 5 while True: 6 f.seek(offs,2)#每一次都seek10个 7 data = f.readlines() 8 if len(data)>1: 9 print(‘文件的最后一行是:%s‘%(data[-1]).decode(‘utf-8‘)) 10 break 11 offs*=2
以上是关于文件中seek的用法补充的主要内容,如果未能解决你的问题,请参考以下文章