You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用read()函数打印文本文件的最后一行?

如何用read()函数打印文件的最后一行

首先咱们先拆解下你现有代码里的问题:

  • 执行a = auto.read(50000)后,文件指针已经跳到了文件第50000字节的位置,后续对auto的操作都会从这个位置开始;
  • 更关键的是,a是字符串类型,不是文件对象,所以a.readlines()这行代码会直接抛出AttributeError(字符串没有readlines方法),这就是你没得到任何输出的核心原因。

接下来针对你的需求,分两种场景给出解决方案:

场景1:文件体积不大,可一次性读取

如果文件不是特别大,直接用read()读取全部内容,再分割成行取最后一行就好,代码简单易懂:

import os

with open(os.path.join(root, file), 'r') as auto:
    # 读取文件全部内容
    full_content = auto.read()
    # 按行分割内容,splitlines()会自动处理不同系统的换行符(\n、\r\n等)
    lines_list = full_content.splitlines()
    # 避免空文件导致索引错误,先判断列表是否非空
    if lines_list:
        print(lines_list[-1])

场景2:文件体积很大,不想一次性读入内存

如果文件特别大,一次性读入内存会占用过多资源,咱们可以从文件末尾往前读取一段内容(比如1024字节,可根据实际情况调整),再从中提取最后一行,这样既用到了read(),又不会占用太多内存:

import os

with open(os.path.join(root, file), 'rb') as auto:
    # 先将文件指针移动到距离末尾1024字节的位置
    # 如果文件总大小不足1024字节,seek会自动跳到文件开头
    auto.seek(-1024, os.SEEK_END)
    # 读取这段内容并解码为字符串(根据你的文件编码调整,比如gbk)
    partial_content = auto.read().decode('utf-8')
    # 分割成行
    lines_list = partial_content.splitlines()
    # 提取最后一行(兼容最后一段包含不完整行的情况)
    last_line = None
    for line in lines_list:
        # 可选:跳过空行,根据你的需求调整
        if line.strip():
            last_line = line
    if last_line:
        print(last_line)

如果你的需求只是单纯获取最后一行,其实Python还有更高效的方式(比如逐行遍历记录最后一行),但既然你明确要求用read()函数实现,上面的方案就完全符合你的要求啦。

内容的提问来源于stack exchange,提问作者Pedro Alves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:35:19