文件中seek的用法补充

文件中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
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

 

posted @ 2018-06-04 21:44 容颜-gl 阅读(...) 评论(...) 编辑 收藏

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值