一、什么是seek
在Python中,seek()函数是用于移动文件读取指针的位置。通过该函数,我们可以随时控制指针在文件中的位置,从而实现文件的读取操作。
二、seek的用法
下面是seek()函数的基本用法:
f.seek(offset, whence)
其中,offset表示偏移量,whence表示偏移的起点。参数解释如下:
- offset:表示需要移动多少个字节。若是正数,则表示从文件开头往文件尾方向移动。若是负数,则表示从文件尾往文件开头方向移动。
- whence:表示偏移的起点,默认值为0。可以取值为0、1、2,分别表示文件开头、当前位置、文件尾位置。
比如,我们可以通过下面的代码实现从文件的头部开始读取5个字节的操作:
with open('file.txt', 'rb') as f:
f.seek(0) # 将指针移动到文件开头
content = f.read(5) # 从文件开头读取5个字节
print(content)
三、示例代码
下面是一个完整的示例代码,该代码可以从一个文本文档中读取特定行数的文本:
def read_file_n_lines(file_path, n):
with open(file_path, 'r') as f:
lines = f.readlines() # 将文件全部内容读取到一个列表中
total_lines = len(lines) # 总行数
target_lines = min(n, total_lines) # 最终需要读取的行数
f.seek(0) # 将指针移动到文件开头
for i in range(target_lines):
line = f.readline()
print(line.strip()) # 输出每一行的内容
该函数接受两个参数:文件路径和需要读取的行数。首先,我们将整个文件内容读取到一个列表中,然后计算总行数和需要读取的行数。接着,使用f.seek()函数将指针移动到文件开头,使用f.readline()函数一行一行地读取到目标行,最后输出每一行的内容。