在Python中,如何测试一行是否是最后一行?

2024-02-10

假设我想处理文件的每一行,但最后一行需要特殊处理:

with open('my_file.txt') as f:
    for line in f:
        if <line is the last line>:
            handle_last_line(line)
        else:
            handle_line(line)

问题是,如何实施? Python中似乎没有检测文件结尾的函数。

除了将行读入列表(使用 f.readlines() 或类似的)之外,还有其他解决方案吗?


处理previous line:

with open('my_file.txt') as f:
    line = None
    previous = next(f, None)
    for line in f:
        handle_line(previous)
        previous = line

    if previous is not None:
        handle_last_line(previous)

当循环终止时,您知道刚刚读取了最后一行。

通用版本,让您单独处理最后 N 行,使用collections.deque() object http://docs.python.org/2/library/collections.html#collections.deque:

from collections import deque
from itertools import islice

with open('my_file.txt') as f:
    prev = deque(islice(f, n), n)
    for line in f:
        handle_line(prev.popleft())
        prev.append(line)

    for remaining in prev:
        handle_last_line(remaining)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中,如何测试一行是否是最后一行? 的相关文章

随机推荐

  • 使用 PHP 获取字母表中下一个字母的最有效方法

    给定从 a 到 z 的任何字符 使用 PHP 获取字母表中下一个字母的最有效方法是什么 最有效的方法是在my意见是只是增加字符串变量 str a echo str prints b str z echo str prints aa 如所见递
  • 为什么我无法从 pypi 安装 PyQt5?

    我想在pycharm中使用PyQt5 尝试从可用软件包安装软件包后 出现错误 安装软件包失败 安装软件包 PyQt5 时发生错误 完整的日志在这里 C Program Files x86 JetBrains PyCharm 3 0 1 he
  • servlet容器和spring容器有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Servlet容器和Spring容器的作用和职责是什么 请有人澄清我的疑问 即使它们的名称相似 它们也是非常不同的概念 A 小服务程序
  • 获取从当前位置(地理位置)到预定义目的地的路线

    诺格我有以下页面 其中包含前往预定义目的地的路线 示例说明 https www checkjevoeding be uitstap get map uitrestroute php id 9 这与以下代码完美配合 h3 My Google
  • Excel VBA Excel 2016中按多个条件进行多行排序

    从此线程继续 具有多个标准排名的动态数据验证下拉列表 https stackoverflow com questions 51198558 dynamic data valdiation drop downs with multiple c
  • 设计:可锁定 - last_attempt_warning 不显示

    我正在尝试实施 lockable模块到我的设备如下这个维基 https github com plataformatec devise wiki How To Add lockable to Users但遇到了一些问题 在开发过程中 当登录
  • 开发一个移动聊天室,后端使用XMPP还是WebSocket?

    移动聊天室的一些要求 应该能够无缝地处理客户端由于移动网络而频繁连接 断开的情况 节省带宽 减少开销 我没有 XMPP 经验 我只使用过 Node JS 服务器 使用 JavaScript 很容易设置和破解服务器 但似乎 XMPP 是聊天室
  • 关于通过引用传递指针的说明

    这有点愚蠢 但我无法真正解释为什么会发生这种情况 作为练习 我想反转单链表 我通过定义方法来做到这一点 class solution void reverseLinkedList Node head Node curr head Node
  • 在 C# 中使用尽可能小的数字签名对消息进行签名

    我工作的公司想要创建某种注册流程 最后用户必须输入密钥才能激活他的产品 我已经搜索并找到了一些解释如何生成密钥的来源 其中之一 如何生成和验证软件许可证密钥 https stackoverflow com questions 599837
  • 在 MySQL 中创建链表或类似队列?

    我有一个需要按特定顺序显示的项目表 但该顺序可以更改 可以在开头 结尾或中间添加项目 并且可以重新排列项目 如何设置表来跟踪该顺序 以便易于修改 但也可以通过单个查询按顺序获取列表 例如 我可以有一个 NEXT ID 列来执行链接列表样式
  • 自定义 ImageView 类不适用于 Picasso 图像下载库

    我最近从 ImageView 扩展创建了 CircularImageView 类 该类使图像成为带有彩色边框的圆形 这是通过 onDraw canvas 方法通过在传入的画布上绘图来完成的 load the bitmap loadBitma
  • 如何在基于 MFC 对话框的应用程序中捕获复选框的 MouseMove 事件?

    我的应用程序是一个基于 VC6 MFC 对话框的应用程序 具有多个属性页 我必须捕获控件上的鼠标移动事件 例如复选框 如何捕获 MFC 中复选框上的 mousemove 事件 复选框是一个按钮控件 例如 CWnd 从 CCheckBox 派
  • Java代码需要system.out.println语句才能运行[重复]

    这个问题在这里已经有答案了 我想知道是否还有其他人遇到过这个问题 我的游戏中的这一部分代码依赖于 system out println 语句来工作 没有它 它将无法正常工作 while isladder t Map tiles int Pl
  • Typescript:在子方法中覆盖父类的静态工厂方法

    我在使用 Typescript 进行依赖注入时遇到了一些问题 在每个类上 我添加一个工厂静态方法 其中设置了所有依赖项 我这样做是出于测试目的 以便我仍然能够使用 TDD 方法 现在我在子类中重写父类的工厂方法时遇到了一些问题 例子 int
  • 如何访问 JavaScript 类之外的类属性

    为什么这个 JavaScript 类中的 sound 属性没有正确私有 另外 如何在课堂之外访问它 我在视频中看到了这一点 并尝试在课堂外访问声音属性 但无法访问 class Dog constructor this sound woof
  • 我如何检查 python 中的 keyhold

    我需要检查电脑上是否按下了箭头键 并在按住箭头键的同时执行某些操作 例如如果 如果按住向上箭头 控制台将打印 上 上 上 上 直到被释放 我怎样才能做到这一点 我尝试了一些库 但每个库似乎都只记录了一次点击 但没有记录重复的按住 谢谢你 您
  • 带有 LIMIT 的多个 WHERE MySQL

    使用 PHP 是否可以从 MySQL 数据库中的一个表中选择多行 其中不同的 WHERE 子句对每个 WHERE 子句都有特定的 LIMIT 例如 SELECT FROM the table WHERE color blue LIMIT 5
  • IDC_STATIC 在resource.h 文件中意味着什么?

    我有一个由 VS 2012 生成的简单 Win32 项目 resource h文件 我看到了这个 ifndef IDC STATIC define IDC STATIC 1 endif 我发现它在几个地方被引用resource rc文件 但
  • Hibernate 在整个 Spring Boot 应用程序上设置属性访问策略

    据我所知Hibernate提供了两种访问策略 FIELD和PROPERTY 可以通过设置annotation来定义 Access上面的实体 但是每次设置有点令人沮丧 Access与实施过程中的战略 有没有办法在整个应用程序上设置 全局 访问
  • 在Python中,如何测试一行是否是最后一行?

    假设我想处理文件的每一行 但最后一行需要特殊处理 with open my file txt as f for line in f if