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 缓冲区传递到操作系统。
相关推荐
道尔柯南1 分钟前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
楠楠子呀9 分钟前
英语、西语、阿语客户各开一个口:多语言获客的分流方案
开发语言·javascript·ecmascript·跨境电商·whatsapp·营销工具
tachibana217 分钟前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
Smoothcloud润云20 分钟前
PyTorch推理服务动态批处理实战:兼顾吞吐与延迟
人工智能·pytorch·python·深度学习·ai·gpu算力
码爸30 分钟前
决策树介绍与示例
python·算法·机器学习
临床数据科学和人工智能兴趣组1 小时前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go1 小时前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
计算机编程指导师1 小时前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变
geats人山人海1 小时前
java 4继承
java·开发语言
aqiu1111112 小时前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法