开发者

Zip Directory with Python

开发者 https://www.devze.com 2023-01-30 09:29 出处:网络
I\'m trying to zip bunch of folders individually.The folders contain files.I wrote a script that seems to work perfectly, except that the resulting zip files are not actually compressed.THey\'re the s

I'm trying to zip bunch of folders individually. The folders contain files. I wrote a script that seems to work perfectly, except that the resulting zip files are not actually compressed. THey're the same size as the original directory!

Here is my code:

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(开发者_Python百科root, file))

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


I'm not a Python expert, but a quick lookup shows that there is another argument for zip.write such as zipfile.ZIP_DEFLATED. I grabbed that from here. I quote:

The third, optional argument to the write method controls what compression method to use. Or rather, it controls whether data should be compressed at all. The default is zipfile.ZIP_STORED, which stores the data in the archive without any compression at all. If the zlib module is installed, you can also use zipfile.ZIP_DEFLATED, which gives you “deflate” compression.

The reference is here. Look for the constant ZIP_DEFLATED; it's definition:

The numeric constant for the usual ZIP compression method. This requires the zlib module. No other compression methods are currently supported.

I suppose that means that only default compression is supported... hope that helps!


Is there any reason you don't just call the shell command, like

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

精彩评论

暂无评论...
验证码 换一张
取 消