文件操作之seek

seek()函数是用于在文件中移动文件指针位置的方法。它可以用来定位文件中的特定位置,以便读取或写入数据

语法:

file.seek(offset, whence)

参数说明:
1. offset:表示要移动的偏移量,可以是正数或负数。
2. whence:表示移动起点,可选值有:
0(默认值):从文件开头开始计算偏移量。
1:从当前位置开始计算偏移量。
2:从文件末尾开始计算偏移量。
返回值: 无

复制代码
 1 # 1. 从文件开头读取前5个字符:
 2 with open('033.txt', 'r') as f:  # Hello, World!
 3     f.seek(0)  # 移动到文件开头
 4     data = f.read(5)  # 读取前5个字符
 5     print(data)  # 输出:Hello
 6 
 7 # 2. 从当前位置向后移动3个字符:
 8 with open('033.txt', 'r') as f:
 9     # 在文本模式下,seek()方法只能从文件开头或文件末尾进行偏移量的相对移动,不能在当前位置进行非零的相对移动。否则报 io.UnsupportedOperation: can't do nonzero cur-relative seeks
10     # f.seek(7, 1)  # 移动到当前位置的下一个字符
11     f.seek(7)
12     data = f.read(3)  # 读取接下来的3个字符
13     print(data)  # 输出:Wor
14 # 3. 从文件末尾向前移动6个字符:
15 with open('example.txt', 'r') as f:
16     f.seek(0, 2)  # 移动到文件末尾
17     f.seek(max(f.tell() - 6, 0))  # 向前移动6个字符,f.tell代表当前位置,
18     data = f.read()  # 读取剩余的内容
19     print(data)  # 输出:file.
复制代码

 



根据具体需求,可以使用不同的参数组合来定位文件中的特定位置。

在使用seek()函数时,确保文件以可读模式打开。

最佳实践:在大多数情况下,我们可以通过逐行读取或按需读取数据而无需使用seek()函数。只有在需要直接定位到文件中的某个特定位置时,才需要使用它。同时,在使用seek()函数之前,确保已经将文件以适当的模式打开。

posted @   Allen_Hao  阅读(175)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示