有没有同学遇到过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控制缓冲行为:
buffering默认为-1,系统默认的全缓冲
buffering=0, 设置为无缓冲模式
buffering=1,设置为行缓冲模式
buffering可以设置为大于1的任意整数,字节数为buffering的全缓冲
看完老张的介绍,现在知道你的日志为什么没有写入文件了吧!