首页 > 其他 > 详细

如何设置文件的缓冲?

时间:2020-07-15 00:51:12      阅读:49      评论:0      收藏:0      [点我收藏+]

需求:
将文件内容写入到硬件设备时,使用系统调用,这类I/O操作赶时间很长,为了减少I/O操作的次数,文件通常使用缓冲区(有足够多的数据才进行系统调用),文件的缓冲行为,分为全缓冲,行缓冲,无缓冲。
如何设置python中文件对象的缓冲行为?

思路:
1、全缓冲:open函数的buffering设置为大于1的整数n,n为缓冲区的大小
2、行缓冲:Open函数的buffering设置为1
3、无缓冲:open函数的buffering设置为0

代码:

# 以只写的方式打开一个文件,若不存在这个文件则新建一个文件
f = open(‘demo.txt‘,‘w‘)
# 写入三个字节
f.write(‘acb‘)
# 用tail -f来监控demo.txt的情况:
tail -f demo.txt
# 一个块一般为4096个字节,再写入4093个字节,tailf查看还是没有输出
f.write(‘+‘*4093)
# 再写入一个字节,tail -f查看有输出了
f.write(‘-‘)

# 设置全缓冲区的大小
# 打开一个文件,设置缓冲区的大小为2048
f = open(‘demo2.txt‘,‘w‘,buffering=2048)
# 测试方法同上

# 设置行缓冲,有\n即可以写入
f = open(‘demo3.txt‘,‘w‘,buffering=1)
f.write(‘abcd‘) # tailf查看文件没有内容
f.write(‘1234‘) # tailf查看文件没有内容
f.write(‘\n‘) # tailf查看文件有内容:abcd1234
f.write(‘xyz\n‘) # tailf查看文件有内容:xyz

# 设置无缓冲
# python3中文本不支持无缓冲,报错ValueError: can‘t have unbuffered text I/O
# python2中可以
f = open(‘demo4.txt‘,‘w‘,buffering=0)
f.write(‘a‘) # tailf可以立刻查看到文件中有内容出现

如何设置文件的缓冲?

原文:https://www.cnblogs.com/Richardo-M-Q/p/13302259.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!