これは のStreamReaderWriter仕組みによるものです。これを行うreadline()と、空ではない a がいっぱいになり、linebufferを呼び出しread()てコードを読み取ると、入力ファイルで機能codecs.pyする a を指定しない限り、バッファにあるものは何でも返されます。size
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'
もう 1 つの簡単な解決策は、read()2 回呼び出すことです。1 回目はバッファリングされた出力を取得し、もう 1 回は残りを丸呑みします。
>>> 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'