file.tell()不一致

file.tell()不一致,第1张

file.tell()不一致

将打开的文件用作迭代器使用预读缓冲区来提高效率。结果,当您遍历行时,文件指针将在文件中大步前进。

从文件对象文档中:

为了使for循环成为遍历文件行的最有效方法(一种非常常见的 *** 作),该

next()
方法使用了隐藏的预读缓冲区。由于使用了预读缓冲区,因此无法
next()
与其他文件方法(例如
readline()
)结合使用。但是,
seek()
用于将文件重新定位到绝对位置将刷新预读缓冲区。

如果您需要依赖

.tell()
,请不要将文件对象用作迭代器。您可以
.readline()
改为使用迭代器(以性能损失为代价):

for line in iter(f.readline, ''):    print f.tell()

这使用

iter()
function
sentinel
参数将任何可调用对象转换为迭代器。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5650978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存