读取第n行python_Python如何一次读取N行

我正在编写一个代码,一次取一个巨大的文本文件(几GB)N行,处理该批处理,然后移到下一行N行,直到我完成整个文件。 (我不在乎最后一批是不是完美的尺寸)。我一直在阅读有关使用itertools islice进行此操作的信息。 我想我在那里:from itertools import isliceN = 16infile = open("my_very_large_text_file","r")li...
摘要由CSDN通过智能技术生成

我正在编写一个代码,一次取一个巨大的文本文件(几GB)N行,处理该批处理,然后移到下一行N行,直到我完成整个文件。 (我不在乎最后一批是不是完美的尺寸)。

我一直在阅读有关使用itertools islice进行此操作的信息。 我想我在那里:

from itertools import islice

N = 16

infile = open("my_very_large_text_file","r")

lines_gen = islice(infile, N)

for lines in lines_gen:

...process my lines...

麻烦的是我想处理下一批16行,但我遗漏了一些东西

可能重复使用Lazy方法在Python中读取大文件?

@ken - OP正在询问如何使用islice执行此操作,在该帖子中OP询问如何使用yield执行此操作。

可能重复如何在Python中一次读取文件N行?

islice()可用于获取迭代器的下一个n项。因此,list(islice(f, n))将返回文件f的下一个n行的列表。在循环中使用它将为您提供n行的块文件。在文件的末尾,列表可能会更短,最后调用将返回一个空列表。

from itertools import islice

with open(...) as f:

while True:

next_n_lines = list(islice(f, n))

if not next_n_lines:

break

# process next_n_lines

另一种方法是使用石斑鱼图案:

with open(...) as f:

for next_n_lines in izip_longest(*[f] * n):

# process next_n_lines

这些天我正在学习python,有一个问题,理想情况下,如果你正在阅读数据库或记录文件,你需要将记录标记为已读(需要另一列),在下一批中你将开始处理下一个未标记的记录,这是如何实现的?特别是next_n_lines = list(islice(infile, n))

@zengr:我不明白你的问题。 list(islice(infile, n))将从文件中获取下一行n行。文件知道您已阅读的内容,您可以继续阅读。

@Sven Marnach你能评论你的代码吗?谢谢!

@Sven Say,我的批处理工作每天运行一次。我有一个1M行的巨大文本文件。但是,我只想在第1天读取前1000行。工作停止了。现在,第二天:我应该从第1001行开始处理同一个文件。那么,除了将行号计数存储在其他地方之外,你如何保持这

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值