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
。