在标题中 - 我有许多非常大的文本文件(> 10GB)具有相同的重复结构。我想过滤掉一些信息,所以我想从它们那里得到每一条第k行但是同时迭代它们。我尝试过itertools:islice和izip,但我不能把它们放在一起......
答案 0 :(得分:2)
鉴于你谈到使用itertools.izip()
,我假设你在这里使用Python 2.
使用itertools.islice()
来帮助从文件中跳过行,itertools.izip_longest()
function可以懒惰地并行读取并处理较短的文件:
from itertools import islice, izip_longest
filenames = [fname1, fname2, fname3]
open_files = [open(fname) for fname in filenames]
kth_slice_files = (islice(f, None, None, k) for f in open_files)
try:
for kth_lines in izip_longest(*kth_slice_files, fillvalue=''):
# do something with those combined lines
islice(fileobj, None, None, k)
将从第一个行开始,然后跳过k - 1
行,为您提供1 + k,然后是1 + 2 * k等行。如果您需要从稍后的行开始,请将第一个None
替换为该起始值。