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

时间:2019-01-29 12:29:38

标签: python zip zipfile

我正在尝试压缩xml文件,然后以字节为单位读取存档。目前,我是通过将zip文件保存到磁盘并按如下方式读回它来完成此操作的:

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

但是我不需要zip文件本身,因此将其保存在磁盘上是一种浪费。我还需要使zip存档具有与文件相同的名称。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

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

您可以像这样传递in-memory buffer

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

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

答案 1 :(得分:0)

致电ZipFile.write(),而不是致电ZipFile.writestr()。除非我缺少任何东西,否则我认为它将满足您的要求。