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

被折叠的 条评论
为什么被折叠?



