Python修改可变迭代器

新派

代码如下:

f=open('test.txt')
file=iter(f)

当我做

next(file)

它将逐行打印文件。但是,当我修改test.txt文件并保存时,next(file)仍然打印原始文件内容。

迭代器是否将完整文件存储在内存中?如果不是,为什么文件内容没有更新?

吹牛

否,作为迭代器,file对象仅在内存中存储一​​个先行缓冲区,而不存储整个文件。这对于大型文件而言非常有效。

由于存在该超前缓冲区,因此对该文件所做的更改不会反映到该next方法中。但是,可以使用该seek方法清除此缓冲区,以便下次调用该next方法将返回更新的内容:

f.seek(f.tell()) # seek the current position only to clear the look-ahead buffer
print(next(f)) # prints the updated next line from the current position

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章