将文件压缩到内存并以字节python的形式读取整个存档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将文件压缩到内存并以字节python的形式读取整个存档相关的知识,希望对你有一定的参考价值。

我正在尝试压缩xml文件,然后将存档作为字节读取。目前,我这样做是通过将zip保存到磁盘并将其读回,如下所示:

zipfile.ZipFile('x.zip', mode='w').write('x.xml')
with open('x.zip', "rb") as f:
    bytes = f.read()

然而,我不需要zip文件,因此将其保存在磁盘上是一种浪费。我还需要让zip存档与文件同名。任何帮助表示赞赏。

答案

ZipFile第一个参数可以是文件路径或类文件对象。

你可以通过in-memory buffer

from io import BytesIO
buffer = BytesIO()
zipfile.ZipFile(buffer, mode='w').write('README.md')
buffer.seek(0)

并使用在buffer模式下打开的b文件

另一答案

不要打电话给ZipFile.write(),而是打电话给ZipFile.writestr()。除非我遗漏了什么,否则我认为这会做你想要的。

以上是关于将文件压缩到内存并以字节python的形式读取整个存档的主要内容,如果未能解决你的问题,请参考以下文章

以二进制形式读取文件,将其压缩并以二进制形式写回

java 图片 边读取边压缩

Actionscript 3,只能读取文件的一部分而不将整个文件加载到内存中

解压缩文件将文件转换为字节

第八课 突破512字节的限制--下

《程序是怎么跑起来的》第六章