首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Python中刷新文件内容意味着什么?

在Python中刷新文件内容意味着什么?
EN

Stack Overflow用户
提问于 2012-05-11 11:46:51
回答 2查看 4.8K关注 0票数 4

我正在尝试通过阅读文档来自学Python。我正在尝试理解刷新文件缓冲区意味着什么。根据文档,"file.flush“执行以下操作。

代码语言:javascript
代码运行次数:0
运行
复制
Flush the internal buffer, like stdio‘s fflush().
This may be a no-op on some file-like objects.

我不知道“内部缓冲区”和“无操作”是什么意思,但我认为它说明flush将数据从某个缓冲区写入文件。

因此,我运行此文件切换中间行中的井号。

代码语言:javascript
代码运行次数:0
运行
复制
with open("myFile.txt", "w+") as file:
    file.write("foo")
    file.write("bar")
    # file.flush()
    file.write("baz")
    file.write("quux")

但是,在调用和不调用file.flush()的情况下,我似乎得到了相同的myFile.txtfile.flush()有什么作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-11 11:57:02

Python缓冲对文件的写入。也就是说,file.write会在数据实际写入硬盘之前返回。这样做的主要动机是,一些大型写入比许多小型写入要快得多,因此通过保存file.write的输出,直到积累了一点,Python可以保持良好的写入速度。

file.flush会强制在此时将数据写出。当您知道可能需要一段时间才能写出更多数据,但又希望其他进程能够查看您已经写入的数据时,就可以使用这种方法。想象一下一个增长缓慢的日志文件。您不希望在建立足够多的条目之前必须等待很长时间才能将数据写出为一个大块。

在任何一种情况下,file.close都会导致剩余数据被刷新,因此一旦file (这是一个非常糟糕的名称,因为它隐藏在内置的file构造函数中)落在with上下文管理器的范围之外并被关闭,代码中的"quux“就会被写出来。

注意:你的操作系统会做一些自己的缓冲,但我相信每一个运行Python的操作系统都会响应file.flush的请求,把数据写到驱动器上。如果我说错了,请有人纠正我。

顺便说一句,"no-op“意味着"no operation",因为它实际上不会做任何事情。例如,StringIO对象操作内存中的字符串,而不是硬盘上的文件。StringIO.flush可能会立即返回,因为它实际上没有什么可做的。

票数 11
EN

Stack Overflow用户

发布于 2012-05-11 11:52:21

可以缓存缓冲区内容以提高性能。刷新可确保内容完全写入磁盘,从而避免数据丢失。例如,当您希望在下一次文件操作发生之前将请求用户输入的行完全打印在屏幕上时,它也很有用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10545167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档