擅长:python、mysql、java
<p>readlines方法在Python 3中不返回迭代器,而是返回一个列表</p>
<pre><code>Help on built-in function readlines:
readlines(...)
Return a list of lines from the stream.
</code></pre>
<p>要检查,只需从交互式会话调用它-它将返回一个列表,而不是迭代器:</p>
<pre><code>>>> type(f.readlines())
<class 'list'>
</code></pre>
<p>在这种情况下,潜入Python似乎是错误的。</p>
<hr/>
<p>当文件对象成为它们自己的迭代器时,<code>xreadlines</code>一直是<a href="http://www.python.org/download/releases/2.3/highlights/" rel="noreferrer">deprecated since Python 2.3</a>。获得与<code>xreadlines</code>相同效率的方法不是使用</p>
<pre><code> for line in f.xreadlines():
</code></pre>
<p><a href="http://docs.python.org/library/2to3.html#2to3fixer-xreadlines" rel="noreferrer">you should use simply</a></p>
<pre><code> for line in f:
</code></pre>
<p>这将为您提供所需的迭代器,并有助于解释为什么<code>readlines</code>不需要在Python 3中更改其行为-它仍然可以返回完整的列表,而<code>line in f</code>习惯用法给出了迭代方法,并且已完全删除了长期不推荐的<code>xreadlines</code>。</p>