Python zipfile 模块不压缩文件

标签 python compression python-zipfile

我在 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 模块只存储数据,要压缩它你可以这样做:

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()

关于Python zipfile 模块不压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18151839/

相关文章:

python - 来自 csv python 的分层 JSON

java - 用Java制作tar文件

asp.net - 为什么 ASP.NET gzip 压缩会破坏 CSS?

python - 将内存中的 ZipFile 对象加载为 KivyImage

python - Map Reduce 常见查询的简单分数聚合

python - 获取选定的行 pyqt5 qtablewidget

python - 使用 NDK 在 Android 上从 C++ 运行 Python

javascript - 在javascript中压缩一个blob

python zipfile 模块似乎没有压缩我的文件

Python:将文件夹中的文件写入zipfile并压缩