如何逆序读取文件?

2023-12-02

如何使用python以相反的顺序读取文件?我想从最后一行到第一行读取一个文件。


以生成器形式编写的正确、高效的答案。

import os

def reverse_readline(filename, buf_size=8192):
    """A generator that returns the lines of a file in reverse order"""
    with open(filename, 'rb') as fh:
        segment = None
        offset = 0
        fh.seek(0, os.SEEK_END)
        file_size = remaining_size = fh.tell()
        while remaining_size > 0:
            offset = min(file_size, offset + buf_size)
            fh.seek(file_size - offset)
            buffer = fh.read(min(remaining_size, buf_size)).decode(encoding='utf-8')
            remaining_size -= buf_size
            lines = buffer.split('\n')
            # The first line of the buffer is probably not a complete line so
            # we'll save it and append it to the last line of the next buffer
            # we read
            if segment is not None:
                # If the previous chunk starts right from the beginning of line
                # do not concat the segment to the last line of new chunk.
                # Instead, yield the segment first 
                if buffer[-1] != '\n':
                    lines[-1] += segment
                else:
                    yield segment
            segment = lines[0]
            for index in range(len(lines) - 1, 0, -1):
                if lines[index]:
                    yield lines[index]
        # Don't yield None if the file was empty
        if segment is not None:
            yield segment
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何逆序读取文件? 的相关文章

  • 如何在序列化器创建方法中获取 URL Id?

    我有以下网址 url r member P
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 如何解决使用 Spark 从 S3 重新分区大量数据时从内存中逐出缓存的表分区元数据的问题?

    在尝试从 S3 重新分区数据帧时 我收到一个一般错误 Caused by org apache spark SparkException Job aborted due to stage failure Task 33 in stage 1
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • 如何在 python 中没有 csv.reader 迭代器的情况下解析单行 csv 字符串?

    我有一个 CSV 文件 需要重新排列和重新编码 我想跑 line line decode windows 1250 encode utf 8 在由 CSV 读取器解析和分割之前的每一行 或者我想自己迭代行 运行重新编码 并仅使用单行解析表单
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • 斯坦福解析器 - 遍历类型依赖图

    基本上我想在依赖关系图中找到两个 NP 令牌之间的路径 然而 我似乎找不到在斯坦福解析器中做到这一点的好方法 有什么帮助吗 非常感谢 斯坦福解析器仅返回单词标记之间的依赖关系列表 我们这样做是为了避免外部库依赖性 但是如果您想操纵依赖性 您
  • VSCode 中的 LaTeX 分数片段

    Context 在过去的 18 个月里 我一直使用 VSCode 的 LaTeX Workshop 扩展来满足我的所有 LaTeXing 需求 到目前为止 我主要将其用于较长篇幅的文章和报告 偶尔也用于课堂笔记 到目前为止 我只需要几个自定
  • PyGame 和 Unicode - 一个永无休止的故事

    我在代码中做了什么 第一次我使用 codecs open 加载一个 UTF 8 文本文件 是的 双重 三重 四重检查 它是 UTF 8 def load verbslist folder name utf encoding fullname
  • 从本地计算机将静态资产部署到heroku - 无法打开文件“manage.py”:[Errno 2]没有这样的文件或目录

    我正在尝试将我的资产文件部署到heroku 并在命令行界面中得到以下输出 nrb dev neurorehabilitation projects git master heroku run python manage py collect
  • 解决 VB6 中的 ADO 超时问题

    我在 VB6 中填充 ADO 记录集时遇到问题 当我使用 SSMS 运行查询 命中 SQLServer 2008 时 它只需要大约 1 秒即可运行 当结果集很小时它工作得很好 但是当结果集有几百条记录时 它需要很长时间 800 条记录需要大
  • 正则表达式否定集不工作 golang

    我有一个正则表达式 已在一些在线正则表达式解析器中验证过 https regexr com 3h5h8 htm html class js 在 golang 中实现这一点与在线正则表达式解析器的方式不匹配 package main impo
  • 使用 JavaScript 进行递归回文检查

    我试图使用 javascript 通过递归来找出字符串是否是回文 但我无法弄清楚代码中缺少什么 var firstCharacter function str return str slice 0 1 var lastCharacter f
  • 无需在设备上进行测试即可将 iPhone 应用程序提交到应用程序商店

    我已经在模拟器上彻底测试了我的应用程序 但我没有 iphone ipad ipod touch 来测试该应用程序 是否有可能存在一些错误 直到我在设备上进行测试后才会暴露出来 如果我有一台 MacBook 我会带着我的代码并与朋友或陌生人会
  • “字符串”类型的表达式不能用于索引类型

    很抱歉创建了另一个此类问题 但即使有类似的问题 我也无法将他们的解决方案应用于我的特定案例 有人可以帮我处理这个 TypeScript 错误吗 Element implicitly has an any type because expre
  • 在 Rails 中的嵌套哈希中搜索键

    我在一个名为的对象中捕获了以下嵌套哈希 来自 Ominauth Facebook myAuth
  • 将 C# WPF .NET 4.0 应用程序移植到 Mac OS X(Mono?)的建议

    我目前有一个使用 WPF 和 LINQ 在 MS Visual C 4 5 中创建的 非商业 应用程序 为了将来能够移植到 Mac OS X 我使用了 MVVM 设计模式来分离逻辑和用户界面 我想知道 1 我知道Mono不支持WPF 我使用
  • 任务排队,重试时没有任何反应(无日志)

    我注意到 Google App Engine 的任务队列中有超过 1 000 个任务在排队 当我点击 立即运行 时 似乎没有发生任何事情 日志条目中没有错误等 我仔细检查了所有内容 但一切似乎都很好 对我来说唯一可疑的是任务队列控制台中的
  • /usr/bin/env 错误的解释器

    尝试让 Amazon 的 EC2 命令行工具正常工作 这就是我的 bash profile 的样子 我收到错误 users zmjones ec2 bin ec2 add keypair usr bin env 错误的解释器 不允许操作 P
  • System.Data.OracleClient 需要 Oracle 客户端软件版本 8.1.7

    我有一个使用 Vb net9 在 Vista 上开发的网站 它与 Oracle 建立连接 对于连接 我使用 System Data OracleClient 它在我的机器和我们的测试服务器上运行良好 但在生产服务器上不起作用 我们在服务器上
  • 相同的字符串文字被认为是相等的吗? [复制]

    这个问题在这里已经有答案了 我写了以下程序 include
  • 没有 crontab -e 的 crontab

    我想通过在我的服务器中执行以下操作来添加 crontab 计划 echo 30 home my var dir to script var etc etc etc gt crontab e 有没有办法做到这一点而不需要做crontab e然
  • Http POST 重音编码

    我有一个编码问题 当我在 Web 浏览器的输入中键入字符 时 它会显示为 E9 并且工作正常 另一方面 当我尝试使用 Python 和请求库发布请求时 它会作为 C3 A9 发送 我该如何解决这个问题 这是不起作用的代码 requests
  • 如何通过单击 mui 中的外部按钮来过滤 DataGrid 列

    假设我有一个像这样的数据网格表 来自官方 MUI 文档 import as React from react import DataGrid GridToolbar from mui x data grid import useDemoDa
  • 如何将数据帧列乘以浮点常量?

    我正在尝试将一列乘以一个浮点数 我这里有它的代码 if str cMachineName str K42 df temp loc P float 105 0 59 0 math pi 0 95 1000 3540 但它给了我这个错误 Typ
  • 如何逆序读取文件?

    如何使用python以相反的顺序读取文件 我想从最后一行到第一行读取一个文件 以生成器形式编写的正确 高效的答案 import os def reverse readline filename buf size 8192 A generat