【Python学习】文件读取指针函数seek()的用法

概述

seek()是Python File类里面的一个方法,用于移动文件读取指针到指定的位置。而readline()或readlines()就是根据这个文件读取指针的位置开始从文件读取数据

语法

seek()方法的语法如下:

fileObject.seek(offset, from)

参数说明:
offset :开始的偏移量,偏移offset个字节
from:可选,0(默认)表示文件起始位置,1表示当前位置,2代表文件末尾

实例1

下面将用实例演示一下seek()方法的用法
下面是‘test.txt’文件内容:

0123456789
0123456789
0123456789

代码:

file = open('test.txt', 'r') #只读方式,文件读取指针指向开头
print(file.tell())           #file.tell()返回当前读取指针
file_data = file.readline()  #读取一行数据
print(file_data)

file.seek(3,0)               #从0开始偏移3个字节
print(file.tell())
file_data = file.readline()  #读取一行数据
print(file_data)

结果:

0
0123456789

3
3456789

上述结果之间空一行是因为读取了末尾的换行符

实例2

下面我再说一个例子,关于文件打开模式为‘a+’情况下的例子
文件跟上一个例子一样,先看代码:

file = open('test.txt', 'a+')  #可读写方式,文件读取指针指向末尾,数据追加在末尾
print(file.tell())             #file.tell()返回当前读取指针
file.write('9876543210\n')     #末尾写入数据
print(file.tell())             #文件写入后返回当前读取指针
file_data = file.readline()    #读取一行数据
print('one' + file_data)       #文件读取指针在末尾,读取数据为空
file.seek(0,0)
print('two' + file.readline()) #文件读取指针在开头,读取第一行数据

结果:

36
48
one
two0123456789

没有读取到数据是因为文件读取指针指向了末尾,所以在使用‘a+’模式时,如果要读取数据要利用seek(0,0)设置文件读取指针
‘test.txt’的变化:

0123456789
0123456789
0123456789
9876543210

上述这个例子是我学习Python文件操作时遇到的坑,在利用‘a+’模式打开文件并写入数据后,用readline()怎么都无法读取数据,后来了解到是因为文件读取指针在末尾,所以无法读取数据,要用seek(0,0)方法将文件读取指针重置,才可以读取数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值