-1

以下运行,但导致解压缩失败的文件:

import io
import zipfile

b = io.BytesIO()
zf = zipfile.ZipFile(b, mode='w')
zf.writestr('a/b.txt', 'look here')
zf.writestr('a/c.txt', 'look there')
open('here.zip', 'wb').write(b.getbuffer())

然后测试:

$ unzip here.zip
Archive:  here.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of here.zip or
        here.zip.zip, and cannot find here.zip.ZIP, period.

什么不见​​了?

更新:

这似乎现在可以工作,不确定它是否被最大程度地压缩?

import io
import zipfile

b = io.BytesIO()
zf = zipfile.ZipFile(b, mode='w')
zf.writestr('a/b.txt', 'look here')
zf.writestr('a/c.txt', 'look there')
zf.close()
open('here.zip', 'wb').write(b.getbuffer())
4

1 回答 1

2

在您的代码中,您需要在将数据写入其中后关闭 zip 文件。下面是示例代码。

import io
import zipfile
b = io.BytesIO()
zf = zipfile.ZipFile(b, mode='w')
zf.writestr('a/b.txt', 'look here')
zf.writestr('a/c.txt', 'look there')
zf.close()
open('here.zip', 'wb').write(b.getbuffer())
于 2022-02-24T11:45:44.777 回答