Nén, giải nén file và thư mục theo chuẩn bz2.


  • administrators

    Gửi anh em Demo nén, giản nén file và thư mục. Hy vọng sẽ hữu ích cho ai đó.

    
    # -*- coding: utf-8 -*-
    """
    Demo nen, giai nen file , thu muc theo chuan bz2.
    @author: Nguyen Duy Hai
    """
    import os
    import bz2
    import tarfile
     
    #Compress file:
    def compressBz2(inputFile=''):
        if os.path.isfile(inputFile) == False:
            print "File: " + inputFile + " not exits."
            return
        output = bz2.BZ2File(inputFile + ".bz2", 'wb')
        with open(inputFile, 'rb') as f:
            output.write(f.read())
            output.close()
     
    #Uncompress file:
    def unCompressBz2(inputFile=''):
        if os.path.isfile(inputFile) == False:
            print "File: " + inputFile + " not exits."
            return
        if os.path.splitext(inputFile)[1].lower() != '.bz2':
            print "File: " + inputFile + " not suport file type."
            return
        file = bz2.BZ2File(inputFile, "r")
        with open(os.path.splitext(inputFile)[0], 'wb') as f:
            f.write(file.read())
            file.close()
     
    #Compress folder:
    def make_tarfile(inputFolder=''):
        if os.path.isdir(inputFolder) == False:
            print "Log's Folder: " + inputFolder + " not exits."
            return
        with tarfile.open(inputFolder + '.tar.bz2', "w:bz2") as tar:
        tar.add(inputFolder, arcname=os.path.basename(inputFolder))
     
    #Uncompress folder
    def de_tarfile(path=''):
        if os.path.isfile(path) == False:
            print "File: " + path + " not exits."
            return
        if not path.endswith('.tar.bz2'):
            print "File: " + path + " not suport file type."
           return
        tar = tarfile.open(path, "r:bz2")
    #Create new folder.
    folder_templ = os.path.dirname(path)
    if not os.path.exists(folder_templ):
        os.makedirs(folder_templ)
     
    for tarinfo in tar:
        print tarinfo.name, "is", tarinfo.size, "bytes"
        if tarinfo.isreg():
            # read the file
            file = tar.extractfile(tarinfo)
            with open(folder_templ + os.sep + tarinfo.name, 'wb') as f:
                f.write(file.read())
                file.close()
         elif tarinfo.isdir():
         if not os.path.exists(folder_templ + os.sep + tarinfo.name):
         os.makedirs(folder_templ + os.sep + tarinfo.name)
    tar.close()
     
    if __name__ == '__main__':
    #compressBz2(r'/var/demo/test.txt')
    #unCompressBz2(r'/var/demo/test.txt.bz2')
    #make_tarfile(r'/var/log')
    #de_tarfile(r'/var/log.tar.bz2')
    
    

Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới Cộng đồng Python Việt Nam, vui lòng đợi một lúc để chúng tôi thử kết nối lại.