我在Python中遇到了压缩问题。 我知道在写入时应该调用ZIP_DEFLATED方法来使zip文件压缩,但这对我不起作用。 我有3个PDF文档在C:zip目录中。 当我运行以下代码时,一切正常:
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)
但这也行不通。 我使用的是Python版本2.7.4,操作系统为Win7。 我在另一台电脑上(同样的环境,Win7和Python 2.7.4)尝试了这段代码,它成功地将test.zip文件压缩了。 我知道zlib模块应该是可用的,当我运行以下代码时:
import zlib
即使zlib模块有问题,顶部的代码也应该返回错误信息,但它没有返回任何错误,因此我怀疑zlib不是问题所在。
Zipfile
构造函数的文档中指出:“如果指定了ZIP_DEFLATED
但未安装zlib
模块,则还会引发RuntimeError
。” 因此,如果没有出现错误,它应该可以正常工作。请注意,在write()
调用中不需要指定compress_type
关键字参数,除非您想覆盖构造函数给出的compression
参数的值。 - martineau