擅长:python、mysql、java
<p>你写的是:</p>
<pre><code>outputfile.writelines sorted(data, key=len, reverse=True)[:3]
</code></pre>
<blockquote>
<p>generates nothing.</p>
</blockquote>
<p>它实际上应该生成一个语法错误异常,因为缺少括号如果它没有,我猜你一定是在使用一些(据称是)像iPython这样的“智能”IDE,它代表你把括号放进去,是这样吗?在</p>
<p>您正在打印三个最短的行,它们很可能都是空的,应该在输出文件中放入三个空行(当然,不向stdout显示任何内容就是您所说的“generates nothing”?)。可能您没有正确调用<code>outputfile.close()</code>,所以当您检查文件时,它们仍处于缓冲状态,尚未写入磁盘。在</p>
<p>正如你所看到的,围绕着你那模棱两可的“一事无成”的论断,存在着大量的可能性。你能澄清一下<strong>确切地</strong>你在使用什么环境,特别是你如何检查你的代码“生成”或没有生成什么?否则,很难帮到你。在</p>
<p><strong>编辑</strong>:OP澄清并显示了他的代码,问题现在很清楚:他第一次完全消耗<code>inputfile</code>,从不“倒带”,因此文件在第二次<code>readlines</code>调用时立即结束(其中没有行)。如果您确实需要独立地读取文件两次(而不是像平常一样只读取一次并传递数据),则每次读取文件时都需要调用<code>inputfile.seek(0)</code>来“倒带文件”,以便再次读取。在</p>