“高效地”将BytesIO对象写入文件

2024-04-25 08:57:54 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,将BytesIO对象写入文件的快速方法是使用:

with open('myfile.ext', 'wb') as f:
    f.write(myBytesIOObj.getvalue())
myBytesIOObj.close()

然而,如果我想迭代myBytesIOObj而不是将其写在一个块中,我将如何进行?我在Python2.7.1上。另外,如果BytesIO很大,它会是一种更有效的迭代编写方式吗?

谢谢


Tags: 文件对象方法closeaswith方式open
1条回答
网友
1楼 · 发布于 2024-04-25 08:57:54

shutil有一个实用程序可以有效地写入文件。它分块复制,默认为16K。4K块的任何倍数都应该是一个好的跨平台数字。我选择131072是相当武断的,因为实际上文件在进入磁盘之前是在RAM中写入OS缓存的,块大小也没什么大不了的。

import shutil

myBytesIOObj.seek(0)
with open('myfile.ext', 'wb') as f:
    shutil.copyfileobj(myBytesIOObj, f, length=131072)

顺便说一句,不需要在结尾关闭文件对象。with定义一个作用域,文件对象在该作用域内定义。因此,文件句柄在退出with块时自动关闭。

相关问题 更多 >