python---全缓冲,行缓冲,无缓冲

本文详细介绍了标准I/O中的流概念及缓存类型,包括全缓存、行缓存和无缓存的工作原理。并通过Python代码示例展示了如何设置不同类型的缓冲,帮助读者深入理解I/O操作的优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在标准I/O中,核心对象是流。所谓流,它是一个过程,所有的I/O操作都是简单的从程序的移进或移出,我们把这种字符流叫做流。标准I/O基于流的操作都是缓存文件系统。

缓存类型分为三种,分别是全缓存、行缓存和无缓存。

全缓存:填满标准I/O缓存区才进行实际的I/O操作。磁盘上的了件用标准I/O打开,默认都是全缓存的。当缓存区填满或者进行flush操作时候才会进行磁盘操作。

行缓存:当输入输出遇到换行符时候就是行缓存了。标准输入和标准输出都是行缓存。

无缓存:不对I/O操作进行缓存,对流的读写可以立即操作实际文件。典型例子就是标准出错。

python 设置文件缓冲类型

Q:

将文件内容写入到硬件设备时候,使用系统调用,这类IO操作时间长,为了减小IO操作,通常会使用缓冲区(有足够多数据才能调用)。

# 设置定长缓冲区
path = r'test.txt'
with open(path, 'w+', encoding='utf-8', buffering=20) as f:
    f.write('hello')
    f.write('hello')

# 设置行缓冲
with open(path, 'w+', encoding='utf-8', buffering=1) as f:
    f.write('hello \n')
    f.write('hello1 \n')
    f.write('hello2 \n')

# 设置无缓冲
with open(path, 'wb+', buffering=0) as f:
    f.write(b'hello')
    f.write(b'hello1')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值