文件操作之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()函数之前,确保已经将文件以适当的模式打开。

浙公网安备 33010602011771号