• 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 + '
    ')
    
    f.close()
    

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

    另一种方法:

    f = open('C:/Users/Administrator/Desktop/1.txt','w')
    
    while True:
        data = input('>>')
        if not data:
            break
        f.write(data + '
    ')
        f.flush() # 人为刷新文件缓冲区
    
    f.close()
    

    此时效果和上面一样

  • 相关阅读:
    数据库 mysql 语句
    document对象
    javascript
    css样式表及属性
    css格式布局
    html 标签
    html 标签
    第四章
    第三章
    第二章
  • 原文地址:https://www.cnblogs.com/zhujiangyu/p/13485477.html
Copyright © 2020-2023  润新知