在Python中读取二进制文件时,缓冲区大小VS文件大小


buffersize=50000
inflie = open('in.jpg','rb')
outfile = open('out.jpg','wb')
buffer = infile.read(buffersize)
while len(buffer):
    outfile.write(buffer)
    buffer = infile.read(buffersize)

我正在学习在python中读/写二进制文件的基础知识,并理解这段代码。如果您能帮助我理解此代码,我将不胜感激。非常感谢。

  • Q1:50000缓冲液相当于50kb吗?(in.jpg约为150kb(
  • Q2:如何从输入文件中读取下一个数据增量(即下一个50000字节的数据(?(在while循环之前读取并存储前50000个字节,然后写入输出文件,如何在不增加范围的情况下读取接下来的50000字节?(
  • Q3:len(buffer(表示缓冲区(文件对象(的大小。while循环中何时出现错误

文档回答了您的所有问题:

file.read([size](

从文件中读取最大大小的字节(如果读取在获得大小字节之前达到EOF,则读取量会减少(。如果size参数为负数或忽略,则读取所有数据,直到达到EOF。字节作为字符串对象返回。当立即遇到EOF时,会返回一个空字符串。(对于某些文件,如tty,在EOF命中后继续读取是有意义的。(请注意,此方法可能会多次调用底层C函数fread((,以获取尽可能接近大小的字节。还要注意,在非阻塞模式下,即使没有给定大小参数,返回的数据也可能少于请求的数据。

1:是的。size参数被解释为字节数。

2:infile.read(50000)表示"从中缀读取(最多(50000字节"。第二次调用此方法时,它将自动从文件中读取接下来的50000字节。

3:buffer不是文件,而是您上次从文件中读取的内容。当缓冲区为空时,即当没有更多数据可从文件中读取时,len(buffer)将计算为False

相关内容

  • 没有找到相关文章

最新更新