python压缩文件

摘要

很久以前写的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[len(self.basedir):]
            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'))


IT家园
IT家园

网友最新评论 (0)