Python文档:https://docs.python.org/2/library/functions.html#open
open(name[, mode[, buffering]])
上面的文档说“可选的缓冲参数指定文件所需的缓冲区大小:0表示无缓冲,1表示行缓冲,任何其他正值表示使用(大约)该大小的缓冲区(以字节为单位)。负缓冲表示使用系统默认值。如果省略,则使用系统默认值。“。
当我使用
filedata = open(file.txt,"r",0)
或
filedata = open(file.txt,"r",1)
或
filedata = open(file.txt,"r",2)
或
filedata = open(file.txt,"r",-1)
或
filedata = open(file.txt,"r")
输出没有变化。上面显示的每一行都以相同的速度打印 输出:
先生。比恩是英国电视节目系列的十五25 -
罗宾·德里斯科尔和罗恩·阿特金森主演的小剧集 如标题字符。罗宾也写了不同的剧集
Driscoll和Richard Curtis以及Ben Elton的一位。 十三 1990年1月1日,飞行员在ITV上播出了这些剧集, 直到 1995年10月31日“晚安憨豆先生”。一个剪辑节目,“最好的比特 的先生。 Bean“,于1995年12月15日播出,还有一集,”Hair 通过
先生。 “伦敦之豆”,直到2006年才播出 尼克。
然后open()函数中的缓冲参数如何有用?什么 价值
该缓冲参数最好用吗?
答案 0 :(得分:24)
启用缓冲意味着您不直接与OS的文件表示或其文件系统API连接。相反,只有一大块数据从原始OS文件流中读取到缓冲区中,直到消耗完为止,此时将更多数据提取到缓冲区中。根据您获得的对象,您将获得一个BufferedIOBase
对象包装基础RawIOBase
(表示原始文件流)。
这有什么好处?与原始流接口良好可能具有高延迟,因为操作系统必须使用硬盘等物理对象,并且在许多情况下可能不适合。假设您希望每5ms读取一个文件中的三个字母,并且您的文件位于硬盘旧硬盘上,甚至是网络文件系统中。不是每隔5ms尝试从原始文件流中读取,最好将一堆文件加载到内存中的缓冲区中,然后随意使用它。
您选择的缓冲区大小取决于您使用数据的方式。对于上面的示例,1个字符的缓冲区大小可能很糟糕,3个字符可能正常,并且3个字符的任何大的倍数都不会导致用户显着延迟。
答案 1 :(得分:8)
您还可以通过从io模块调用只读DEFAULT_BUFFER_SIZE属性来检查默认缓冲区大小。
import io
print (io.DEFAULT_BUFFER_SIZE)
答案 2 :(得分:1)
缓冲是在临时存储器中存储文件块直到文件完全加载的过程。在python中,可以给出不同的值。如果缓冲设置为0,则缓冲关闭。当我们需要缓冲文件时,缓冲将设置为1。
答案 3 :(得分:1)
缓冲设置为 -1 时,我的文件写入需要 13 分钟。缓冲设置为 2**10 时,我的文件写入需要 7 秒。所以,缓冲的目的是加速你的程序。