Python:itertools.islice 不在循环中工作

2024-02-21

我有这样的代码:

#opened file f
goto_line = num_lines #Total number of lines
while not found:
   line_str = next(itertools.islice(f, goto_line - 1, goto_line))
   goto_line = goto_line/2
   #checks for data, sets found to True if needed

line_str 在第一遍中是正确的,但之后的每遍都读取不同的行。

例如,goto_line 从 1000 开始。它可以很好地读取第 1000 行。然后下一个循环,goto_line 是 500,但它不读取第 500 行。它读取一些接近 1000 的行。

我正在尝试读取大文件中的特定行,而不读取超出必要的内容。有时它向后跳到一行,有时向前跳。

我确实尝试过 linecache,但我通常不会在同一个文件上多次运行此代码。


Python 迭代器只能使用一次。通过示例最容易看出这一点。下面的代码

from itertools import islice
a = range(10)
i = iter(a)
print list(islice(i, 1, 3))
print list(islice(i, 1, 3))
print list(islice(i, 1, 3))
print list(islice(i, 1, 3))

prints

[1, 2]
[4, 5]
[7, 8]
[]

切片总是从我们上次停止的地方开始。

让代码正常工作的最简单方法是使用f.readlines()获取文件中行的列表,然后使用普通的 Python 列表切片[i:j]。如果你真的想使用islice(),您可以每次使用从头开始读取文件f.seek(0),但这会非常低效。

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

Python:itertools.islice 不在循环中工作 的相关文章

随机推荐

  • 反序列化包含 java.lang.CharSequence 成员变量的类

    我有一个简单的类包含name类型变量java lang CharSequence class Person public java lang CharSequence name 当我尝试使用 GSON 库反序列化 JSON 字符串时 Per
  • Dashing 无法在 Heroku 上运行

    我正在尝试将 Dashing 部署到 Heroku 一切都在本地主机上完美运行 按照 github 页面提供的说明进行部署 这似乎与向后移植宝石有关 以下是heroku日志文件 2014 11 26T21 12 22 141799 00 0
  • 在python中将多个Excel文件(xlsx)附加在一起

    import pandas as pd import os import glob all data pd DataFrame for f in glob glob output test xlsx df pd read excel f a
  • d3:绘制累积图

    Does d3 https d3js org 有内置方法将数据集绘制为累积图吗 例如 如果 y 值为 2 4 2 2 我希望它们实际上被绘制为 2 6 8 10 d3 有办法做到这一点还是我必须遍历数据集并手动执行此操作 你可以检查http
  • git clone 在不同服务器上产生不同的权限

    在一台服务器上执行 git clone git github com blasto333 PHP Point Of Sale git 时 文件权限是 我显示一个文件 但所有文件都是这样 rw r r 1 chrism chrism 3297
  • 如何将参数传递给角度2中的POST方法

    我想将参数传递给 Angular 2 中的 POST 方法 但我使用时它不起作用params new httpParams set 但它没有起作用 我也尝试过params new httpParams set 和 headers然后它也不起
  • 无法查看.Net Core bitbucket pipelines 测试结果

    我终于设法通过以下命令在 bitbucket 管道中制作测试报告 dotnet test MyTests logger trx LogFileName test reports results xml 构建拆解 说 Found matchi
  • 查询优化和 API 限制

    我们正在跟踪许多客户的 Facebook 页面和帖子指标 根据开发人员见解控制台 见解 gt 开发人员 gt 活动和错误 该文档对 Graph API 的限制和限制有些不清楚 我们只是想确保我们对可用的资源有正确的理解 我们正在努力优化我们
  • 在 Windows 10 上禁用 NPM run dev 不编译资产并为用户提供错误通知

    我最近重新安装了 Windows 10 操作系统 运行时npm install command npm 安装正确 然而 在运行npm run watch命令或npm run dev命令 资产未编译 显示以下消息 通知被禁用原因 Disabl
  • LDAP:过滤多个UID

    我正在尝试为一个团队设置 mediawiki 并且希望仅对一组用户进行 LDAP 身份验证 我知道我可以提出组 LDAP 身份验证 但是有没有一种快捷方式可以仅过滤一组 uid 进行身份验证 您可以使用的 LDAP 搜索过滤器是 uid a
  • data.table:如何将字符向量传递给函数 get data.table 以将其内容视为列名?

    这是一个数据表 library data table DT lt data table airquality 这个例子产生了我想要的输出 DT New Ozone log Ozone New Wind log Wind 我怎样才能写一个函数
  • 在猫鼬中进行条件查找

    我有两个收藏 文章和书签 articles id 5faa889ade5e0a6326a873d3 name article 1 id 5faa889ade5e0a6326a873d name article 2 书签 id 5faa889
  • 在 eclipse Oxygen 中更改 PHP 语言库

    面向 PHP 开发人员的 Eclipse 版本 氧气释放 4 7 0 内部版本号 20170620 1800 我怎样才能改变PHP Language Library到 PHP 7 参见下面的屏幕 该项目源自先前的 eclipse 版本 已导
  • 使用过多内存从 {raster} 包中提取

    我一直在使用extract函数从raster包使用 shapefile 定义的区域从光栅文件中提取数据 但是 我对该过程现在所需的内存量存在问题 我确实有大量 shapefile 1000 光栅文件很大 1 6gb 我的流程是 shp lt
  • 如何从命令行界面将字符串作为 stdin 传递给 python 脚本

    目前 我正在使用以下命令来执行此操作 python scriptName py
  • 反转 gcc 输出的顺序

    我想颠倒 gcc 在我的程序中发现的错误的顺序 为什么 读取最后一行的第一个错误并避免滚动到第一行 我在 gcc cat tail 和 head 手册上搜索了类似 reverse 的命令 但没有结果 所以 我想要一个以相反顺序打印标准输入的
  • 带有 RVM 的 Ruby 1.9.3 IRB 中的 Unicode 字符

    Update 我发现几乎完全正确类似的问题 https stackoverflow com q 4590725 80851 但它的先决条件略有不同 因此没有多大帮助 Given MacOS 狮子 10 7 3 RVM 1 14 2 红宝石
  • Flutter 文本字段仅允许用户插入给定范围内的数字

    我会强制只插入 1 20 之间的值 如果用户输入 2 没问题 但如果用户在 2 21 之后输入 1 则文本字段将不允许在 2 之后输入 1 是否有任何正则表达式 我尝试过这样但它只允许数字 inputFormatters Filtering
  • dart 中可以有私有构造函数吗?

    我可以在 TypeScript 中执行类似以下操作 class Foo private constructor so this constructor只能从类本身内部访问 如何在 Dart 中实现同样的功能 只需创建一个以以下开头的命名构造
  • Python:itertools.islice 不在循环中工作

    我有这样的代码 opened file f goto line num lines Total number of lines while not found line str next itertools islice f goto li