重複の可能性:
file.tell()の不整合
ファイルの内容を検討する
D:\temp>od -c test.txt
0000000 x x x x x \r \n y y y y y \r \n z z
0000020 z z z \r \n t t t t t
0000032
このファイルとその後tell()
の現在の位置を繰り返すと、間違った結果が返されるたびに(結果は最後に表示されます)
>>> with open("test.txt","r+") as fin:
for line in fin:
print fin.tell(), line.strip()
26 xxxxx
26 yyyyy
26 zzzzz
26 ttttt
しかし、ファイルを直線的に読み取ると、結果は期待と一致します
>>> with open("test.txt","r+") as fin:
while True:
line = fin.readline()
if not line:
break
print fin.tell(), line.strip()
7 xxxxx
14 yyyyy
21 zzzzz
26 ttttt
ファイルを反復処理するときは、コンテンツ全体をバッファリングするか、少なくとも反復を開始する前に終了を超えて読み取るようです。
文書化された既知の動作ですか