擅长:python、mysql、java
<p>我会看这样的东西:</p>
<pre><code>from itertools import islice
with open('somefile') as fin:
line_count = 0
my_lines = []
for line in fin:
line_count += 1
if some_logic(line):
my_lines.append(line)
next_5 = list(islice(fin, 5))
line_count += len(next_5)
my_lines.extend(next_5)
</code></pre>
<p>这样,通过对输入使用<code>islice</code>,您可以将迭代器向前移动,并在5行(如果接近文件末尾,可能更少)用完后继续。</p>
<p>这是基于如果我理解正确,您可以通过文件向前读取,标识一行,并且只希望在该点之后有固定数量的行,然后按照正常情况恢复循环。(如果这就是您所追求的全部,您甚至可能不需要行计数,因为它看起来只是为了<code>getline</code>而不是任何其他目的)。</p>
<p>如果您确实想使用下一个5,并且仍然考虑下一行,则可以使用<code>itertools.tee</code>在故障行的点处分支,然后<code>islice</code>在下一行继续使用<code>fin</code>迭代器。</p>