为什么tell()会返回不同的答案,具体取决于是否从内部调用' for'循环与'而'环?例如,请使用以下代码:
tempfile = open(...,'r')
print('for loop:')
for line in tempfile:
lineStart=tempfile.tell()
print('line:'+str(lineStart))
tempfile.seek(0)
print('while loop:')
line=tempfile.readline()
while line != '':
lineStart=tempfile.tell()
print('line:'+str(lineStart))
line=tempfile.readline()
这个输出是:
for loop
line:1014
line:1014
...
line:1014
line:1014
while loop
line:19
line:38
line:64
...
line:1001
line:1011
line:1014
答案 0 :(得分:3)
在内部,for line in file
使用预读缓冲区,这解释了为什么.tell()
会在您的示例中返回更高的数字。
来自documentation(强调我的):
为了使
for
循环成为循环文件行的最有效方式(非常常见的操作),next()
方法使用隐藏的预读缓冲区强>