Python学习笔记之 缓冲区

缓冲

系统自动的在内存中为每一个正在使用的文件开辟一个缓冲区,从内存向磁盘输出数据必须先送到内存缓冲区,再由缓冲区送到磁盘中去。从磁盘中读数据,则一次从磁盘文件将一批数据读入到内存缓冲区中,然后再从缓冲区将数据送到程序的数据区。

刷新缓冲区条件

1.缓冲区被写满

2.程序执行结束或者文件对象被关闭。

3.行缓冲遇到换行

4.程序中调用flush()函数

实例:

import sys
from time import sleep

def printStar(n):
    for i in range(n):
        print('*',end=' ')
        sys.stdout.flush()
        sleep(0.5)

if __name__ == '__main__':
    printStar(5)

在如上实例中,如果将sys.stdout.flush()注释掉,
则5颗星会一起打印,否则会一个一个打印

另一个例子:

f = open('C:/Users/Administrator/Desktop/1.txt','w')

while True:
    data = input('>>')
    if not data:
        break
    f.write(data)

f.close()

当终端打印>>时输入Hello world回车,此时打开1.txt会发现里面并没有内容,说明此时Hello world还在缓冲区中,再输入一个回车,程序执行结束,此时可以看到1.txt里出现了Hello world。

更改代码如下:

f = open('C:/Users/Administrator/Desktop/1.txt','w',1) # 行缓冲,换行刷新文件缓冲区

while True:
    data = input('>>')
    if not data:
        break
    f.write(data + '\n')

f.close()

此时每输入一个字符串都会保存进文件里

另一种方法:

f = open('C:/Users/Administrator/Desktop/1.txt','w')

while True:
    data = input('>>')
    if not data:
        break
    f.write(data + '\n')
    f.flush() # 人为刷新文件缓冲区

f.close()

此时效果和上面一样

posted @ 2020-08-11 22:08  小宇宙zjy  阅读(899)  评论(0编辑  收藏  举报