当前位置:  开发笔记 > 编程语言 > 正文

在写入后调用搜索和/或读取操作时,Python是否会自动刷新其缓冲区?

如何解决《在写入后调用搜索和/或读取操作时,Python是否会自动刷新其缓冲区?》经验,为你挑选了0个好方法。

假设我编写以下python代码:

file = open("test.txt","w+")
file.write("hi")
file.seek(0)
file.read()

第二行告诉Python我想写"hi"到文件.当然这里涉及两个缓冲区 - 内部Python缓冲区和操作系统缓冲区 - 所以"hi"实际上可能不会写入文件.据我所知,如果我用文件显式刷新文件file.flush()或关闭文件,file.close()那么Python缓冲区将被清除,Python将使用操作系统API写入方法.我也理解,在这两种情况下(我明确地称为刷新或关闭),不能保证操作系统实际上会写入磁盘(为了保证我必须调用os.fsync(file)).

无论如何,在上面的代码中,我不会调用flush也不会关闭.所以这是我的问题:

在写操作之后,当我将文件指针返回到文件的开头(file.seek(0))和/或从文件(file.read())中读取时,是否可以保证Python将刷新自己的缓冲区?如果这是有保证的,保证刷新是否是搜索操作,读操作或者其中之一?换句话说,搜索和/或读取是否自动执行刷新?为了清楚起见,我不是在谈论操作系统刷新到磁盘,我非常积极并不能保证 - 我只是在谈论Python自己的缓冲区.

当我测试它时,似乎读取和搜索都刷新了Python的缓冲区,但我不确定这是否只是可能的行为或保证行为.

如果这不是保证行为,我仍然可以依赖于在file.write之后调用file.seek或file.read(即/是否有一些其他内部机制来处理不涉及操作系统写入的内容)?或者最好的做法是file.flush()在写作之后总是在寻找或阅读之前打电话?

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有