Python:打开zip文件而不扩展" .zip"

时间:2017-05-10 17:58:07

标签: python zipfile

我有一个名为" main.zip"的zip文件。在里面,我有另一个名为" meta"没有" .zip"延期。我想打开" meta"包含大量文本文件的zip文件。但是当我试图打开" meta" zip文件,我收到错误zipfile.BadZipfile: File is not a zip file。以下是我的代码:

zf = zipfile.ZipFile(inputZipFile, 'r')
print(zf.namelist())    # [u'meta']
zf2 = zipfile.ZipFile(zf.open('meta')) # throws error

我无法提取和打开" meta"因为我想在没有写入磁盘的情况下完全在内存中执行此操作。

我的最终目标是修改其中一个文本文件并输出一个新的zip。

1 个答案:

答案 0 :(得分:3)

如果您打算在内存中执行此操作,则需要创建一个类似文件的对象来调用zipfile.ZipFile。虽然ZipFile.open表示它会这样做,但实际上我会遇到同样的错误。

我已经开始工作的是使用ZipFile.read阅读二进制文件并将其投放到io.BytesIO信息流中。

import io

with zipfile.ZipFile("main.zip") as zf:
    f2 = io.BytesIO(zf.read("meta"))
    with zipfile.ZipFile(f2) as zf2:
        # this is inside the inner zip file