<p>例如,在Python中,文件是可迭代的——它们在文件的行上迭代。我想数一数行数。</p>
<p>一个快速的方法是:</p>
<pre><code>lines = len(list(open(fname)))
</code></pre>
<p>但是,这会立即将整个文件加载到内存中。这完全违背了迭代器的用途(迭代器只需要将当前行保存在内存中)。</p>
<p>这不起作用:</p>
<pre><code>lines = len(line for line in open(fname))
</code></pre>
<p>因为发电机没有长度。</p>
<p>有什么方法可以做到这一点,不定义一个计数函数?</p>
<pre><code>def count(i):
c = 0
for el in i: c += 1
return c
</code></pre>
<p>为了澄清,我明白整个文件都要读!我只是不想一下子记住</p>