vike681 发表于 2017-4-23 14:49:50

python 压缩文件

很久以前写的python对文件的压缩操作,可以参考参考,下面是代码。

'''
Created on 2011-8-7

@author: WGY
'''
import zipfile
import os.path
import os
class ZFile(object):
    def __init__(self, filename, mode='r', basedir=''):
      self.filename = filename
      self.mode = mode
      if self.mode in ('w', 'a'):
            self.zfile = zipfile.ZipFile(filename, self.mode, compression=zipfile.ZIP_DEFLATED)
      else:
            self.zfile = zipfile.ZipFile(filename, self.mode)
      self.basedir = basedir
      if not self.basedir:
            self.basedir = os.path.dirname(filename)
         
    def addfile(self, path, arcname=None):
      path = path.replace('\', '/')
      if not arcname:
            if path.startswith(self.basedir):
                arcname = path
            else:
                arcname = ''
      self.zfile.write(path, arcname)
            
    def addfiles(self, paths):
      for path in paths:
            if isinstance(path, tuple):
                self.addfile(*path)
            else:
                self.addfile(path)
            
    def close(self):
      self.zfile.close()
         
    def extract_to(self, path):
      for p in self.zfile.namelist():
            self.extract(p, path)
            
    def extract(self, filename, path):
      if not filename.endswith('/'):
            f = os.path.join(path, filename)
            dir = os.path.dirname(f)
            if not os.path.exists(dir):
                os.makedirs(dir)
            file(f, 'wb').write(self.zfile.read(filename))
            
         
def create(zfile, files):
    z = ZFile(zfile, 'w')
    z.addfiles(files)
    z.close()
   
def extract(zfile, path):
    z = ZFile(zfile)
    z.extract_to(path)
    z.close()
create('e:/js/a.zip',('e:/js/test.txt'))

转http://wgyblog.com/html/artcode/195.html
页: [1]
查看完整版本: python 压缩文件