在迭代期间查找文件中的位置

2023-12-26

我正在尝试使用f.tell()在迭代期间的普通文本文件中:

with open('test.txt') as f:
    for line in f:
        print(f.tell())

我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
OSError: telling position disabled by next() call

为了确保这一点,我检查了如果我尝试手动跳过一行并丢弃迭代器对象(可能是文件本身),是否会发生相同的错误:

with open('test.txt') as f:
    next(f)
    print(f.tell())

我的最终目标是找到文件中第一行的长度(以字节为单位),无论平台如何,因此以下工作正常:

with open('test.txt') as f:
    f.readline()
    print(f.tell())

我很好奇为什么使用tell在迭代期间被禁用。我能理解为什么seek考虑到大多数迭代器不喜欢并发修改,它将被禁用,但为什么tell? Does tell执行一些影响迭代器的状态更改或类似的操作?

我可能应该提到我正在 Anaconda 环境中运行 Python 3.6.2。我在 Arch Linux 和 Red Hat 7.5 上都观察到了这种行为。

Update

这个问题似乎以不同的形式出现在Python 2.7中:file.tell() 不一致 https://stackoverflow.com/q/14145082/2988730。不知道是不是缓冲优化导致的不一致的原因tell在 Python 3 中被完全禁用。

这实际上带来了一个更深层次的问题,这就是为什么操作系统级别的文件指针被返回tellPython 文件接口的目标是抽象出来吗?这并不像Python级别指针的位置是模糊或神秘的,有或没有缓冲。


None

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

在迭代期间查找文件中的位置 的相关文章

  • python导入模块时如何避免一直写模块名?

    我用math最近模块很多 我不想写math sqrt x and math sin x 每时每刻 我想缩短它并写sqrt x and sin x How 对于较长的模块名称 通常会缩短它们 例如 import numpy as np 然后您
  • Spark MLlib - 训练隐式警告

    我在使用时不断看到这些警告trainImplicit WARN TaskSetManager Stage 246 contains a task of very large size 208 KB The maximum recommend
  • 底图上的子图

    我有一张英国地图和 121 个地点 每个地点有 3 个值 我想绘制 121 个位置中每个位置的三个值的小条形图 目前 这些值绘制为markersize属性 看起来像这样 密集恐惧症情节 https i stack imgur com 5fv
  • 为什么 tkinter / window.update 在我的程序中随着时间的推移变得更慢?

    我发现当我调用 window update 时 当向窗口写入的内容较少时 它的运行速度会更快 但后来 当我向窗口写入更多元素时 window update 需要更长的时间 请参阅下面的我的代码 您可以看到它在更新窗口之前一次向屏幕 100
  • Python + PostgreSQL + 奇怪的ascii = UTF8编码错误

    我有包含字符的 ascii 字符串 x80 代表欧元符号 gt gt gt print x80 当将包含该字符的字符串数据插入数据库时 我得到 psycopg2 DataError invalid byte sequence for enc
  • 将 API 数据存储到 DataFrame 中

    我正在运行 Python 脚本来从 Interactive Brokers API 收集金融市场数据 连接到API后 终端打印出请求的历史数据 如何将数据保存到数据帧中而不是在终端中流式传输 from ibapi wrapper impor
  • Python sqlite3游标没有属性commit

    当我运行这段代码时 path Scripts wallpapers single png conn sqlite3 connect Users Heaven Library Application Support Dock desktopp
  • 字典中的列表,Python 中的循环

    我有以下代码 TYPES hotmail type hotmail lookup mixed dkim no signatures S Return Path email protected cdn cgi l email protecti
  • Django 的 URL 覆盖率测试为 0%,为什么?

    使用姜戈鼻子 我对 URL 进行了测试 但 URL 覆盖率仍然为 0 为什么 python manage py 测试配置文件 这是我的报道 Name Stmts Miss Cover Missing profiles 0 0 100 pro
  • 如何使用 Python 多处理避免在分叉进程中加载​​父模块

    当您创建一个Pool使用Python的进程multiprocessing 这些进程将分叉 父进程中的全局变量将显示在子进程中 如下面的问题所述 如何限制多处理进程的范围 https stackoverflow com questions 2
  • 如何对这个 Flask 应用程序进行单元测试?

    我有一个 Flask 应用程序 它使用 Flask Restless 来提供 API 我刚刚写了一些身份验证来检查 如果消费者主机被识别 该请求包含一个哈希值 通过加密 POST 的请求内容和 GET 的 URL 以及秘密 API 密钥来计
  • 在 matplotlib 中使用 yscale('log') 时缺少误差线

    在某些情况下 当使用对数刻度时 matplotlib 会错误地显示带有误差条的图 假设这些数据 例如在 pylab 内 s 19 0 20 0 21 0 22 0 24 0 v 36 5 66 814250000000001 130 177
  • 从 IMDbPy 结果中的片目中获取电影 ID

    我正在尝试创建一个数据集 允许我根据 Python IMDb API 中的演员 ID 和电影 ID 加入演员和电影 现在 我正在尝试从演员的电影作品中提取电影 ID 列表 但无法做到 例如 我知道 Rodney Dangerfield 在
  • Django 接受 AM/PM 作为表单输入

    我试图弄清楚如何使用 DateTime 字段在 Django 中接受 am pm 作为时间格式 但我遇到了一些麻烦 我尝试在 forms py 文件中这样设置 pickup date time from DateTimeField inpu
  • 如何向 SCons 构建添加预处理和后处理操作?

    我正在尝试在使用 SCons 构建项目时添加预处理和后处理操作 SConstruct 和 SConscript 文件位于项目的顶部 预处理动作 生成代码 通过调用不同的工具 gt 不知道在此预处理之后将生成的确切文件 可以创建用于决定生成哪
  • 如何正确消除字典中的元素直到只剩下一个字符串

    我真的需要这方面的帮助 def get winner dict winner new dict for winner in dict winner first letter winner 0 value dict winner winner
  • 将 JSON 文件拆分为单独的文件

    我有一个大的 JSON 文件 它是对象的对象 我想将其拆分为对象键后的单独文件名 是否可以使用 jq 或任何其他现成工具来实现这一目标 原始 JSON 格式如下 item1 item2 鉴于此输入 我想生成文件 item1 json ite
  • 在 Python 的 Textmate 中突出显示尾随空格?

    我想做类似的事情this http remysharp com 2008 03 30 trailing white space in textmate Textmate 提示 这样当我在 Python 中编写代码时 尾随空白总是以某种方式突
  • scipysolve_ivp() 中的访问时间步长

    我有一个常微分方程系统 正在使用 scipy 的solve ivp 函数求解 它运行良好 但我在访问每个步骤中使用的时间步时遇到问题 我知道solve ivp 将当前时间传递给用户定义的函数 但我需要使用的时间步长 而不是当前时间 为了解决
  • Python 枚举子集迭代

    我想迭代以下枚举的子集 class Items enum Enum item1 0 item2 1 item3 2 item4 3 item5 4 item6 5 item7 6 item8 7 说我想 for item in Items

随机推荐

  • Vim 光标用 .vimrc 换行

    我似乎无法让光标换行在 vim 7 3 中工作 我尝试过其他地方找到的建议 包括以下建议 但没有效果 set whichwrap lt gt set whichwrap gt l set whichwrap lt h 有什么建议么 我已经包
  • 如何在 Angular 中嵌入 YouTube 视频?

    我在 YouTube 上关注了这个教程 它基本上是一张包含您喜欢的音乐的表格 但教程结束了 它使用 Angular2 一切都工作正常 但是这位先生留下的地方 它只是使用以下代码在控制台中显示视频的构造函数 播放列表 组件 Ts export
  • Apache Velocity:如何像 Java 中那样定义自定义方法?

    我目前在 Polarion 应用程序 ALM 软件中编写了一个 wiki 页面 这些页面上的语法包括 据我所知 HTML Javascript 和 Apache Velocity 所以我想在 Apache Velocity 中编写一个脚本
  • 如何使用Jest测试文件下载?

    我有一些代码如下 global document global window global Blob import FileSaver from file saver export const createDownloadFromBlob
  • 检测数字键盘是否存在?

    是否可以判断系统是否连接有数字键盘 台式机键盘通常有数字键盘 而笔记本电脑通常没有 尽管它们将数字键盘键放在普通键盘中 并通过 Num Lock 激活 操作系统是否知道小键盘按键是否在物理上是分开的 如果是这样 这些信息是否会以某种方式暴露
  • 通过 ODBC 连接检索的表情符号数据显示为问号

    我从经典 ASP 页面连接到 MySQL 版本 5 5 50 log MySQL数据库设置如下 数据库字符集 utf8mb4 数据库排序规则 utf8mb4 general ci 表和字段 字符集 utf8mb4 排序规则 utf8mb4
  • 更新 mnesia 架构的最简单方法是什么?

    例如 我保存了 id name 在 mnesia 并想要更新到 id name age 我需要打电话吗transform table每次我更改架构时 最简单的方法是删除该表并重新创建它 如果需要保留表中的数据 mnesia transfor
  • 来自字符串“Yellow”的 Java 颜色

    有什么方法可以从字符串中获取颜色 例如 白色 Color color Field field Class forName java awt Color getField Yellow color Color field get null I
  • 动态添加的表单字段在 form.cleaned_data 中被删除

    我在模板中放置了一些客户端 JavaScript 允许用户动态地将字段添加到表单中 我的问题是这些字段被清理了form cleaned data 所以我无法以这种方式访问 它们 所有字段都可以在request POST 所以我可以用它来解决
  • 算法 - 如何通过 2n/3 比较对 0/1 数组进行排序?

    In 算法设计手册 http www algorist com 有这样的消费税 4 26 考虑使用以下方法对 n 个 0 和 1 的序列进行排序的问题 比较 对于两个值 x 和 y 的每次比较 该算法 了解 x y 中哪一个成立 a 给出一
  • 行构造函数有什么用?

    在 PostgreSQL 中 什么是ROW 函数用于 具体有什么区别 SELECT ROW t f1 t f2 42 FROM t where f1属于类型int f2属于类型text and CREATE TYPE myrowtype A
  • 查询DB并返回Json格式结果的通用Java方法

    我正在寻找的东西对我来说似乎很简单 但我的护目镜失败了 我想要一个允许我运行任何查询并获取 json 格式结果的方法 诀窍是我don t希望结果需要 java 对象作为过程的一部分 DTO VO 等 有什么快速 简单 干净的方法可以做到这一
  • 如何在xsd文件中定义xml主键并在xml文件中验证

    建筑物 xsd
  • 在 Android 的警报管理器中使用 Intent Extras 传递值

    我想知道这段代码是否有效 我现在无法尝试 此外 我还有一些疑问需要澄清 Intent intent new Intent context AlarmReceiver class intent putExtra user global get
  • 如何从R中的数据帧创建不同格式的矩阵?

    我的数据框如下 group id user id 1000 26 1236 29 1236 46 3767 26 3767 46 5614 29 5614 45 5614 46 我需要输出如下 User 1 User 2 of common
  • 将图像从 3d 视角重绘为 2d

    我需要用 Pascal Delphi Lazarus 编写的逆透视变换 请参见下图 我想我需要遍历目标像素 然后计算源图像中的相应位置 以避免舍入误差等问题 function redraw 3d to 2d sourcebitmap tbi
  • WPF C# 按钮样式

    有人知道如何在 WPF 中重新创建此按钮样式吗 因为我不知道如何制作不同的隔间 以及两种不同的文本和文本样式 要解决你的问题肯定需要使用Style and Template为了Button 但他到底长什么样呢 决定可能有几个 例如 Butt
  • 在 SQLPlus 中设置查询输出的格式

    我目前正在使用 SQLPlus 每当我查询数据库时 结果都是一团糟 换句话说 它很难读 我想知道是否有人知道如何在 Unix 服务器上运行的 SQLPlus 中格式化查询的输出 列 表等 但是 我正在从 Windows 访问服务器 而且 谁
  • 使用 wicked_pdf gem 和 wkhtmltopdf 在 PDF 上显示图像标题

    我的控制器 def show respond to do format format pdf do render pdf gt show template gt welcome show footer gt right gt Page pa
  • 在迭代期间查找文件中的位置

    我正在尝试使用f tell 在迭代期间的普通文本文件中 with open test txt as f for line in f print f tell 我收到以下错误 Traceback most recent call last F