📜  程序打印最后10行(1)

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

程序打印最后10行

在编程开发的过程中,有时需要从一个大文件中找到最后几行记录,本文将介绍如何在Python中实现获取文件最后10行的代码。

实现过程

我们可以使用Python的标准库collections中的双端队列(deque)来解决这个问题,双端队列是一种具有队列和栈的性质的数据结构,可以从队列的两端添加、删除元素。

首先,我们需要创建一个双端队列,并设置一个队列的最大长度,这个队列的最大长度就是我们要获取的最后几行数据的数量。

from collections import deque

def tail(filename, n=10):
    """
    获取文件的最后n行
    """
    # 双端队列,存储最近的n行内容
    last_lines = deque(maxlen=n)

    # 读取文件内容,更新队列
    with open(filename) as f:
        for line in f:
            last_lines.append(line.strip())

    # 返回最后n行内容
    return last_lines

这段代码的实现 logic 是,使用with open语句打开文件,循环读取文件中的每一行,并将其添加到双端队列中。由于我们将双端队列的最大长度设置为n,所以当双端队列中的元素个数大于n时,将自动删除队头的元素,保证队列中永远只有最后n个元素。

最后,我们可以测试一下这个函数,看看它是否能够正确地获取文件的最后10行内容。

if __name__ == '__main__':
    last_10_lines = tail('test.log')
    print('\n'.join(last_10_lines))

在上面的代码中,我们读取了一个名为test.log的文件,并使用join()方法将文件的最后10行内容连接成一个字符串并输出。

结尾

本文中介绍的方法通过使用双端队列,在Python中实现了从文件中获取最后几行内容的功能。这个方法可以帮助我们在处理大文件时更加高效地获取所需的内容。