如何使用 Python 读取文件的最后一行

在 Python 编程中,读取文件是一个很常见的操作。在某些情况下,需要读取文件的最后一行,这需要使用一些特定的技术。

  1. 使用 seek 和 tell 方法

这是一个最简单的方法,可以通过文件对象的 seek 和 tell 方法来实现读取最后一行。先使用 tell 方法获取当前文件的大小,然后回到文件结尾前一个字符,并且向前搜索 ‘\n’ 字符,直到找到最后一行,并读取。

示例代码如下:

with open('file.txt', 'rb') as f:
    f.seek(-2, 2)
    while f.read(1) != b'\n':
        f.seek(-2, 1)
    last_line = f.readline().decode()
print(last_line)

该代码打开文件 file.txt 并回到文件末尾前一个字符,然后向前搜索 ‘\n’ 字符,并在找到 ‘\n’ 字符时返回该行。

  1. 使用文件缓存区

这种方法更简单,因为它不需要像前一种方法那样回到文件的结尾,并且假设文件中的最后一行不超过缓冲区大小。

示例代码如下:

with open('file.txt', 'r') as f:
    last_line = f.readlines()[-1].strip()
print(last_line)

该代码打开文件 file.txt 并使用 readlines 方法读取全部行,并返回列表。然后,该代码从列表中选择最后一行,并删除结尾的空白字符。

注意点

上述代码可以在大多数情况下正常工作,但是在访问过大的文件时,使用第一种方法可能要快得多,因为它只需要指定缓冲区大小即可,而第二种方法需要全部读入内存,这可能会导致内存不足或程序速度较慢。

代码实现

下面是一个使用 seek 和 tell 方法读取文件最后一行的完整代码示例:

def last_line(file_path):
    with open(file_path, 'rb') as f:
        f.seek(-2, 2)
        while f.read(1) != b'\n':
            f.seek(-2, 1)
        last_line = f.readline().decode()
    return last_line
    
last_line('file.txt') # 输入文件名并返回最后一行的内容

下面是一个从文件缓存区读取最后一行的完整代码示例:

def last_line(file_path):
    with open(file_path, 'r') as f:
        last_line = f.readlines()[-1].strip()
    return last_line
    
last_line('file.txt') # 输入文件名并返回最后一行的内容

这些代码示例有助于您使用 Python 访问文件并获取最后一行。