将文件内容写入硬盘的时候会进行系统调用,这类调用的I/O时间比较长,为了减少I/O次数,可以设置文件缓冲区,即达到足够多的数据量的时候才进行磁盘的写入操作。一般缓冲分为:全缓冲、无缓冲、行缓冲。
全缓冲
默认情况下,python文件写入采用全缓冲,大小4096字节。即前4096个字节的信息都会写在缓冲区中,当第4097个字节写入的时候,会把之前的4096个字节通过系统调用写入文件。
f = open('test.txt', 'w')
f.write('+' * 4096)
'''这个时候看文件内容还没有写入'''
f.write('*')
'''这是第4097个字节,此时前4096个字节的信息已写入文件'''
同样,可以自定义缓冲区的大小:
f = open('test2.txt', 'w', buffering=2048)
f.write('+'* 2048)
f.wrtte('-')
无缓冲
当需要将程序产生的信息实时写入文件中,就需要设置无缓冲的模式:
f = open('test3.txt', 'w', buffering=0)
f.write('abc')
f.write('123')
将buffering设置为0,即表示设置为无缓冲模式,f.write()数据将实时写入文件中。
行缓冲
行缓冲是每当遇到一个换行符的时候才进行系统调用,将缓冲区的内容写入文件中:
f = open('test5.txt', 'w', buffering=1)
f.write('123')
f.write('\n')
f.write('abc\n')
将buffering设置为1即表示设置为行缓冲