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

本文主要介绍Python File类中seek()方法,它用于移动文件读取指针到指定位置,readline()等方法依此读取数据。文中说明了seek()方法的语法及参数含义,还通过两个实例演示其用法,指出使用‘a+’模式打开文件读取数据时,需用seek(0,0)重置指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

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)方法将文件读取指针重置,才可以读取数据。

### Python 文件读取中的指针操作 在Python中,`seek()` 和 `tell()` 方法用于控制文件内部的读写位置。通过这些方法可以在文件的不同部分之间灵活跳转。 #### 使用 `seek()` 定位文件指针 `seek(offset[, whence])` 是File类里的一个成员函数,用来调整文件内“游标”的位置[^1]。参数`offset`表示相对于某个参照点要偏移多少字符;第二个可选参数`whence`定义了参照点,默认为0即从头开始计算: - 当`whence=0`时,相对文件开头; - 如果设置成1,则基于当前位置; - 设置为2的话是从文件结尾算起。 下面是一个简单的例子展示如何利用`seek()`定位到特定字节处再继续读取数据: ```python with open('example.txt', 'rb+') as f: # 将指针移到第10个字节的地方 f.seek(10) # 打印此时指针所在的位置 print(f.tell()) # 开始从此处读取剩余的数据 data = f.read() print(data.decode()) ``` 这段代码先将文件指针移动到了距离文件头部10个字节之后的位置,接着打印出了新的指针位置,并尝试解码并显示后续所有的二进制内容[^3]。 #### 利用 `tell()` 查询当前指针位置 每当执行完一次I/O操作后,都可以调用`tell()`获取最新的文件指针坐标。这有助于跟踪程序正在访问哪一部分的数据,在调试期间尤其有用。 ```python file = open('example.txt', 'r') current_position = file.tell() # 获取初始位置通常是0 print("Initial Position:", current_position) # 假设这里进行了某些读/写动作... file.readline() new_position = file.tell() # 更新后的指针位置 print("New Position after readline():", new_position) file.close() ``` 此片段展示了打开文本模式下的文件后怎样查询最开始以及经过一次行读取后的两个不同阶段下各自的指针位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值