什么?文件读写还有缓冲!

有没有同学遇到过DEBUG的时候日志死活不写入文件,必须关闭程序才能拿到想要的日志文件?一头雾水的你是否想起文件缓冲这个冷知识?

操作系统提供的文件的io操作的缓冲行为分为:

  • 全缓冲:往往同系统及磁盘块大小有关,n个字节后执行一次写入操作

  • 行缓冲:遇到换行符执行一次写操作

  • 无缓冲:立刻执行写操作

那么如何指定程序运行时的缓冲行为呢?老张以python3下的open函数为例,先来看看open函数的注解:

help(open)
Help on built-in function open in module io:


open(...)
    open(file, mode='r', buffering=-1, encoding=None,
         errors=None, newline=None, closefd=True, opener=None) -> file object


open函数可以接收多个参数,其中参数buffering控制缓冲行为:

  1. buffering默认为-1,系统默认的全缓冲

  2. buffering=0, 设置为无缓冲模式

  3. buffering=1,设置为行缓冲模式

  4. buffering可以设置为大于1的任意整数,字节数为buffering的全缓冲

看完老张的介绍,现在知道你的日志为什么没有写入文件了吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值