您的位置:

Python中如何使用seek进行文件读取

一、什么是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()函数一行一行地读取到目标行,最后输出每一行的内容。