擅长:python、mysql、java
<p>这是因为<code>StreamReaderWriter</code>的工作方式。当您执行<code>readline()</code>时,它将填充一个<code>linebuffer</code>,当您调用<code>read()</code>,读取<code>codecs.py</code>代码时,它将以快捷方式返回缓冲区中的任何内容,除非您指定一个对输入文件有效的<code>size</code>。在</p>
<p>如果要使用<code>os.path.getsize</code>作为<code>read()</code>的提示:</p>
<pre><code>>>> import os
>>> a = codecs.open('test.txt', 'r', 'utf-8'); a.readline(); a.read(os.path.getsize('test.txt'))
u'1572278\n'
u'#*OQL[C++]: Extending C++ with an Object Query Capability.\n#@Jos\xe9 A. Blakeley\n#year1995\n'
</code></pre>
<p>因为您正在slurp文件;您可以先这样做,然后在顶部使用<code>StringIO</code>。在</p>
^{pr2}$
<p>另一个简单的解决方案是调用<code>read()</code>两次,一次获取缓冲输出,另一次调用slurp其余的输出。在</p>
<pre><code>>>> a = codecs.open('test.txt', 'r', 'utf-8'); a.readline(); a.read() + a.read()
u'1572278\n'
u'#*OQL[C++]: Extending C++ with an Object Query Capability.\n#@Jos\xe9 A. Blakeley\n#year1995\n'
</code></pre>