这是因为工作方式StreamReaderWriter
。当你这样做时,readline()
它会填充 alinebuffer
当你调用时不为空read()
,读取codecs.py
代码,这将返回缓冲区中的任何内容,除非你指定size
适用于你的输入文件的 a。
如果您想os.path.getsize
用作提示read()
:
>>> 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'
既然你在啜饮文件;你可以先这样做并StringIO
在上面使用。
>>> import StringIO
>>> a = codecs.open('test.txt', 'r', 'utf-8');
>>> buff = StringIO.StringIO(a.read())
>>> buff.readline()
u'1572278\n'
>>> buff.read()
u'#*OQL[C++]: Extending C++ with an Object Query Capability.\n#@Jos\xe9 A. Blakeley\n#year1995\n'
另一个简单的解决方案是调用read()
两次,一次获取缓冲输出,另一次获取其余的输出。
>>> 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'