123sw 发表于 2017-4-30 13:11:14

python 压缩文件(2)

  加入tar中间过程:


# -*- coding:utf-8 -*-
#=============================================================================================================
#
#   brief   :    制作viruswall 的离线升级数据
#
#   author  :    hechangmin
#
#   date    :    2008.6 
#
#   notice  :    先变成tar 文件
#=============================================================================================================

import os
import threading, zipfile
import tarfile

class AsyncZip(threading.Thread):
    
    def __init__(self, infile, outfile):
        threading.Thread.__init__(self)        
        self.infile = infile
        self.outfile = outfile
    def run(self):
        state = 'w'
        if os.path.isfile(self.outfile) == True:
            state = 'a'
        f = zipfile.ZipFile(self.outfile, state, zipfile.ZIP_DEFLATED)
        f.write(self.infile)
        f.close()
        print 'Finished background zip of: ', self.infile
        
def zipDir(src,dst):
    
    initPath = os.getcwd()
    
    tempDST =  os.path.join(os.getcwd(),dst)
    tempSRC =  os.path.join(os.getcwd(),src)
    os.chdir( tempSRC )
    files = os.listdir(os.curdir)
    tar = tarfile.open("temp.tar","w")
    for file in files:
        tar.add(file)
    tar.close()
    background = AsyncZip("temp.tar",dst)
    background.start()
    background.join()    # Wait for the background task to finish
        
    os.chdir( initPath )
    print os.getcwd()
#test ok
if __name__ == '__main__':
    
    zipDir("D:\\AutoUpdate\\DataDist\\viruswall\\Data\\KSVW-VirusDB\\","d:\\AutoUpdate\\DataDist\\viruswall\\Data\\update\\KSVW-VirusDB.tgz")
    


当然还不够,因为这里虽然加入了tar环节,但是最后还是zip压缩。
页: [1]
查看完整版本: python 压缩文件(2)