📜  编写一个 Python 程序来读取文件的最后 n 行 - Python (1)

📅  最后修改于: 2023-12-03 15:27:37.558000             🧑  作者: Mango

编写一个 Python 程序来读取文件的最后 n 行

本文介绍如何使用 Python 编写一个程序来读取文件的最后 n 行。这个程序可以用于查看大型日志文件等。

读取文件的最后 n 行

要读取文件的最后 n 行,可以按以下步骤操作:

  1. 打开文件,并获取文件总行数。
  2. 使用文件对象的 seek() 方法将文件指针移动到倒数第 n 行的开头位置。
  3. 使用文件对象的 readlines() 方法读取文件指针位置到文件结尾的所有行。

代码示例:

def tail(filename, n):
    with open(filename) as f:
        lines = f.readlines()
        total_lines = len(lines)

        # 如果文件总行数小于 n,则返回全部行
        if total_lines <= n:
            return lines
        
        # 移动文件指针到倒数第 n 行的开头位置
        f.seek(0)
        for i in range(total_lines - n):
            f.readline()
        
        # 读取文件指针位置到文件结尾的所有行
        return f.readlines()

在上面的示例中,我们定义了一个 tail() 函数,它接收两个参数:文件名和要读取的行数。函数使用 with open() 语句打开文件,以避免忘记关闭文件导致的资源泄漏等问题。然后,它使用 readlines() 方法读取文件所有行,并计算总行数。如果文件总行数小于等于要读取的行数,则返回全部行。否则,它使用 seek() 方法将文件指针移动到倒数第 n 行的开头位置,并使用 readlines() 方法读取从该位置到文件结尾的所有行。

示例代码

下面是一个完整的示例代码:

def tail(filename, n):
    with open(filename) as f:
        lines = f.readlines()
        total_lines = len(lines)

        # 如果文件总行数小于 n,则返回全部行
        if total_lines <= n:
            return lines
        
        # 移动文件指针到倒数第 n 行的开头位置
        f.seek(0)
        for i in range(total_lines - n):
            f.readline()
        
        # 读取文件指针位置到文件结尾的所有行
        return f.readlines()

if __name__ == '__main__':
    filename = '/path/to/your/file.txt'
    n = 10
    last_n_lines = tail(filename, n)
    print(last_n_lines)

在上面的示例代码中,我们使用 tail() 函数读取了指定文件的最后 10 行,并将结果打印到控制台。你可以根据自己的需求修改文件名和要读取的行数。

以上就是编写一个 Python 程序来读取文件的最后 n 行的介绍。如果你有任何问题或建议,请随时在评论区留言。