我在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不是问题。
答案 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()