Python zipfile模块不压缩文件

时间:2013-08-09 16:54:40

标签: python compression zipfile

我在Python中遇到压缩问题。 我知道我应该在写入时调用ZIP_DEFLATED方法来压缩zip文件,但它对我不起作用。 我在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文件没有压缩。 我还尝试更改write方法,为其提供 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不是问题。

1 个答案:

答案 0 :(得分:10)

默认情况下,ZIP模块只存储数据,为了压缩它,你可以这样做:

import zipfile
try:
    import zlib
    mode= zipfile.ZIP_DEFLATED
except:
    mode= zipfile.ZIP_STORED

zip= zipfile.ZipFile('zipfilename', 'w', mode)
zip.write(item)
zip.close()