Python flush函数作用

flush() 是 Python 中文件对象(包括标准输入输出流如 sys.stdout)的一个方法,用于强制将内部缓冲区中的数据立即写入到目标设备(如磁盘文件或终端)。

为什么要使用 flush()?

Python 的文件写入默认是缓冲的,即数据先暂存在内存缓冲区中,等到缓冲区满了或文件关闭时再真正写入。这样做是为了减少频繁的 I/O 操作,提高效率。但在某些场景下,我们需要数据立即生效,例如:

  • 实时查看输出(如打印进度条、日志)。
  • 确保写入磁盘,防止程序崩溃丢失数据。
  • 交互式程序中,在 input() 提示前刷新输出,确保提示信息显示。

示例

python

复制代码
import sys
复制代码
import time
复制代码
复制代码
# 不 flush 的情况:可能不会立即显示
复制代码
print("开始处理...", end="")
复制代码
# 模拟耗时操作
复制代码
time.sleep(2)
复制代码
print("完成")  # 前面的"开始处理..."会在这一行输出后才一起显示
复制代码
复制代码
# 使用 flush 强制立即输出
复制代码
print("开始处理...", end="", flush=True)
复制代码
time.sleep(2)
复制代码
print("完成")

对于文件操作:

python

复制代码
with open("log.txt", "w") as f:
复制代码
    f.write("重要信息")
复制代码
    f.flush()  # 立即写入磁盘,但操作系统可能仍有缓存
复制代码
    # 此时若程序崩溃,数据可能已经到达操作系统缓冲区,丢失风险降低

注意点

  • flush() 并不保证数据物理写入磁盘(操作系统可能还有缓存),但确保数据从 Python 缓冲区传递到操作系统。
相关推荐
你好潘先生6 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师6 小时前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码6 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
copyer_xyf7 小时前
FastAPI 如何连接 MySQL
后端·python
apocelipes20 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780511 天前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent1 天前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m6251 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python
SelectDB2 天前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
荣码2 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python