7

我在 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 文件无需压缩。我还尝试更改 write 方法以为其提供compress _类型参数:

file.write(item, compress_type = ZIP_DEFLATED)

但这也行不通。我在 Win7 中使用 Python 2.7.4 版。我用另一台计算机(相同的情况,Win7 和 Python 2.7.4)厌倦了代码,它使 test.zip 文件按应有的方式压缩。我知道 zlib 模块应该可用,当我运行它时:

import zlib

它不会返回错误,如果 zlib 模块有问题,顶部的代码也应该返回错误,所以我怀疑 zlib 不是问题。

4

1 回答 1

17

默认情况下 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()
于 2013-08-09T20:40:45.237 回答