擅长:python、mysql、java
<p><code>file</code>对象,如<code>origin_file</code>是迭代器。不仅可以使用</p>
<pre><code>for line in origin_file:
</code></pre>
<p>但也可以使用<code>next(origin_file)</code>从迭代器获取下一项。
实际上,您可以从<code>for-loop</code>内调用迭代器上的<code>next</code>:</p>
^{pr2}$
<hr/>
<p>如果没有额外的10行代码,上面的代码将引发<code>StopIteration</code>错误
在找到最后一个<code>foo</code>之后。要处理这种可能性,可以使用<a href="https://docs.python.org/2/library/itertools.html#itertools.islice" rel="nofollow noreferrer">^{<cd8>}</a>
要从迭代器中最多分割10个项目:</p>
<pre><code>import re
import itertools as IT
with open("bar.txt") as origin_file:
for line in origin_file:
if re.search(r'foo', line):
print line,
for line in IT.islice(origin_file, 10):
print line,
</code></pre>
<p>现在代码将优雅地结束(不引发<code>StopIteration</code>异常),即使有
不是<code>foo</code>之后的10行。在</p>