可能重复:
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
似乎在遍历文件时,它要么缓冲整个内容,要么至少在开始迭代之前读取结束。
它是已知的记录行为吗