将打开的文件用作迭代器使用预读缓冲区来提高效率。结果,当您遍历行时,文件指针将在文件中大步前进。
从文件对象文档中:
为了使for循环成为遍历文件行的最有效方法(一种非常常见的 *** 作),该
next()方法使用了隐藏的预读缓冲区。由于使用了预读缓冲区,因此无法next()与其他文件方法(例如readline())结合使用。但是,seek()用于将文件重新定位到绝对位置将刷新预读缓冲区。
如果您需要依赖
.tell(),请不要将文件对象用作迭代器。您可以
.readline()改为使用迭代器(以性能损失为代价):
for line in iter(f.readline, ''): print f.tell()
这使用
iter()function
sentinel参数将任何可调用对象转换为迭代器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)