【发布时间】:2013-08-09 16:54:40
【问题描述】:
我在 Python 中遇到了压缩问题。 我知道我应该在写入压缩 zip 文件时调用 ZIP_DEFLATED 方法,但它对我不起作用。 我在 C:zip 目录中有 3 个 PDF 文档。 当我运行以下代码时,它工作得很好:
import os,sys
list = os.listdir('C:\zip')
file = ZipFile('test.zip','w')
for item in list:
file.write(item)
file.close()
它使 test.zip 文件没有压缩。 当我将第四行更改为:
file = ZipFile('test.zip','w', compression = ZIP_DEFLATED)
它还可以使 test.zip 文件不经过压缩。 我还尝试更改写入方法以赋予它 compress_ type 参数:
file.write(item, compress_type = ZIP_DEFLATED)
但这也不起作用。 我在 Win7 中使用 Python 2.7.4 版。 我用另一台计算机(相同的情况,Win7 和 Python 2.7.4)厌倦了代码,它使 test.zip 文件按应有的方式压缩。 我知道 zlib 模块应该可用,当我运行它时:
import zlib
它不会返回错误,如果 zlib 模块有问题,顶部的代码也应该返回错误,所以我怀疑 zlib 不是问题。
【问题讨论】:
-
您如何检查最终的 zip 文件是否已压缩或未压缩?
-
Zipfile构造函数的文档说“如果指定了ZIP_DEFLATED但 zlib 模块不可用,则还会引发RuntimeError。”因此,如果您没有收到错误,它应该可以工作。请注意,没有必要在write()调用上指定compress_type关键字参数,除非您想覆盖为构造函数提供的compression参数值。
标签: python compression zipfile