最明显的方法就是
write
到文件。
的全部要点
copyfileobj
它为您缓冲数据。如果必须将整个文件读入
BytesIO
,您只是在缓冲
拜特西奥
,这是毫无意义的。
所以,绕个圈子
read
正在从
src_f
和
写
it收件人
dst_f
直到你到达
flength
字节。
如果你看
the
shutil
source
(链接自
the
shutil
docs
),里面没有魔法
copyfileobj
;这是一个微不足道的函数。从3.6开始(我认为从那时起它就完全没有变化
舒蒂尔
是在2.1左右添加的),看起来像这样:
def copyfileobj(fsrc, fdst, length=16*1024):
"""copy data from file-like object fsrc to file-like object fdst"""
while 1:
buf = fsrc.read(length)
if not buf:
break
fdst.write(buf)
您可以做同样的事情,只需跟踪读取的字节并在
FLENGHT公司
:
def copypartialfileobj(fsrc, fdst, size, length=16*1024):
"""copy size bytes from file-like object fsrc to file-like object fdst"""
written = 0
while written < size:
buf = fsrc.read(min(length, size - written))
if not buf:
break
fdst.write(buf)
written += len(buf)