我有一个名为"main.zip"的zip文件。在其中,我有另一个名为"meta"的zip,它没有".zip"扩展名。我想打开包含大量文本文件的"元"zip文件。但是当我尝试打开"元"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
我无法提取和打开"元",因为我想完全在内存中执行此操作而不写入磁盘。
我的最终目标是修改其中一个文本文件并输出一个新的zip。
如果您打算在内存中执行此操作,则需要创建一个类似文件的对象来调用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