2

可能重复:
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

似乎在遍历文件时,它要么缓冲整个内容,要么至少在开始迭代之前读取结束。

它是已知的记录行为吗

4

0 回答 0