使用Python的Zip目录

时间:2010-12-15 00:22:49

标签: python-3.x

我正在尝试单独压缩一堆文件夹。文件夹包含文件。我写了一个似乎完美的脚本,除了生成的zip文件实际上没有压缩。它与原始目录的大小相同!

这是我的代码:

import os, zipfile

workspace = "C:\\ziptest"

dirList = os.listdir(workspace)

def zipDir(path, zip):
  for root, dirs, files in os.walk(path):
    for file in files:
      zip.write(os.path.join(root, file))

for item in dirList:
  zip = zipfile.ZipFile('%s.zip' % item, 'w')
  zipDir('C:\\ziptest\%s' % item, zip)
  zip.close()

2 个答案:

答案 0 :(得分:3)

我不是Python专家,但是快速查找显示zip.write还有另一个参数,例如zipfile.ZIP_DEFLATED。我从here抓住了它。我引用:

  

write方法的第三个可选参数控制要使用的压缩方法。或者更确切地说,它控制是否应该压缩数据。默认值为zipfile.ZIP_STORED,它将数据存储在存档中,而不进行任何压缩。如果安装了zlib模块,您还可以使用zipfile.ZIP_DEFLATED,它可以“压缩”压缩。

引用为here。寻找常数ZIP_DEFLATED;它的定义是:

  

常用ZIP压缩方法的数字常量。这需要zlib模块。目前不支持其他压缩方法。

我认为这意味着只支持默认压缩...希望有所帮助!

答案 1 :(得分:0)

你有没有理由不只是调用shell命令,比如

def zipDir(path, zip):
    subprocess.Popen('7z a -tzip %s %s'%(path, zip))