1. 程式人生 > >Python3 壓縮與解壓縮(zlib / gzip / bz2 / lzma / zipfile / tarfile)

Python3 壓縮與解壓縮(zlib / gzip / bz2 / lzma / zipfile / tarfile)

本文由 Luzhuo 編寫,轉發請保留該資訊. 
原文: http://blog.csdn.net/Rozol/article/details/72672703

以下程式碼以Python3.6.1為例 
Less is more! 
檔案的歸檔 (各種格式的壓縮 / 解壓縮) 
實際使用中僅需要使用shutil模組的壓縮和解壓函式就可以了, 如果想嘗試其他功能, zipfile(暴力破解), tarfile(命令列)也是值得推薦的
#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2017/5/21'
# filscondense.py 檔案的歸檔 (各種格式的壓縮 / 解壓縮)
# 實際使用中僅需要使用shutil模組的壓縮和解壓函式就可以了, 如果想嘗試其他功能, zipfile(暴力破解), tarfile(命令列)也是值得推薦的

import zlib

def zlib_demo():
    # 對直接進行壓縮
    data = b'luzhuo.me'

    com_bytes = zlib.compress(data)
    print("壓縮後的資料: ", com_bytes)

    decom_bytes = zlib.decompress(com_bytes)
    print("解壓後的資料: ", decom_bytes)


    # 對資料流進行壓縮
    with open("file.txt", "rb") as read, open("com.txt", "wb") as write:
        com = zlib.compressobj(level=9, memLevel=9)
        for data in read:
            # 壓縮資料並寫入檔案
            write.write(com.compress(data))
        write.write(com.flush())

    # 對資料流進行解壓
    with open("com.txt", "rb") as read, open("temp.txt", "wb") as write:
        decom = zlib.decompressobj()
        for data in read:
            write.write(decom.decompress(data))
        write.write(decom.flush())


def zlib_func():
    '''
    zlib
    '''

    # zlib.adler32(data[, value]) // 計算資料的Adler-32校驗和(比CRC32快), value:校驗和的起始值(預設1)
    num = zlib.adler32(b"luzhuo.me")
    # zlib.crc32(data[, value]) // 計算資料的CRC(迴圈冗餘校驗)校驗和, value:校驗和的起始值,預設0
    num = zlib.crc32(b"luzhuo.me")

    # zlib.compress(data[, level])  // 壓縮位元組資料,返回壓縮後的位元組, level:[0,9],0:無壓縮,1最小壓縮,9最高壓縮, 預設:6
    bytes = zlib.compress(b"luzhuo.me")
    # zlib.decompress(data[, wbits[, bufsize]])  // 解壓縮, wbits:歷史緩衝區(預設:15), bufsize:儲存解壓資料的緩衝區(預設:16384)
    bytes = zlib.decompress(bytes)

    # 壓縮物件 level:壓縮級別[0,9], method:壓縮演算法(DEFLATED), wbits:歷史緩衝區大小,值越大,壓縮效果更好(注:使用預設值), memLevel:記憶體量[1,9],值越大,效果更好更快
    # strategy:策略 Z_DEFAULT_STRATEGY / Z_FILTERED / Z_HUFFMAN_ONLY, zdict:壓縮字典(預期頻繁出現的位元組序列)
    # zlib.compressobj(level=-1, method=DEFLATED, wbits=15, memLevel=8, strategy=Z_DEFAULT_STRATEGY[, zdict])
    com = zlib.compressobj(level=9, memLevel=9)
    # zlib.decompressobj(wbits=15[, zdict]) // 解壓縮物件
    decom = zlib.decompressobj()

    strs = zlib.ZLIB_VERSION  # zlib版本
    strs = zlib.ZLIB_RUNTIME_VERSION  # 直譯器執行的zlib版本

    # 壓縮物件
    com_data = com.compress(b"luzhuo.me")  # 壓縮資料
    # Compress.flush([mode]) // 完成剩餘壓縮資料的位元組物件, mode:Z_SYNC_FLUSH(可進步壓縮) / Z_FULL_FLUSH(可進步壓縮) / Z_FINISH(完成壓縮)
    data = com.flush()
    com.copy()  # 拷貝壓縮物件副本

    # 解壓縮物件
    # Decompress.decompress(data[, max_length])  // 解壓
    data = decom.decompress(data)

    decom.unused_data  # 將要解壓的資料
    decom.unconsumed_tail  # 未解壓的資料
    decom.eof  # 資料流是否已結束
    decom.flush()  # 完成壓縮, 無法再次解壓, length:緩衝區大小
    decom.copy()

    # 異常
    try: pass
    except zlib.error: pass  # 壓縮和解壓縮錯誤而引發的異常


if __name__ == "__main__":
    zlib_demo()

    # zlib_func()

# ==================================




import gzip
import shutil
content = b"luzhuo.me"

def gzip_demo():

    # 類位元組物件的壓縮與解壓
    # 壓縮
    bytes_com = gzip.compress(content)
    print("位元組壓縮: ", bytes_com)
    bytes_decom = gzip.decompress(bytes_com)
    print("位元組解壓: ", bytes_decom)


    # 對gzip檔案的讀寫操作
    # 寫入
    with gzip.open('box.gz', 'wb') as write:
        write.write(content)
    # 讀取
    with gzip.open('box.gz', 'rb') as read:
        data = read.read()
        print(data)


    # 檔案物件的壓縮與解壓
    # 壓縮
    with open('file.txt', 'rb') as read, gzip.open('file.txt.gz', 'wb') as write:
        shutil.copyfileobj(read, write)
    # 解壓
    with gzip.open('file.txt.gz', 'rb') as read, open('temp.txt', 'wb') as write:
        shutil.copyfileobj(read, write)



def gzip_func():
    '''
    該模組提供簡單壓縮和解壓縮檔案, 資料壓縮有zlib提供
    f = gzip.open(), 壓縮就直接往裡寫, 解壓就直接讀取
    '''

    # 開啟gzip壓縮檔案: filename:檔名或file物件, mode:讀寫模式,二進位制: 'r', 'rb'(預設), 'a', 'ab', 'w', 'wb', 'x', 'xb',文字:'rt', 'at', 'wt', 'xt', compresslevel:壓縮級別[0,9], 文字模式可提供(二進位制模式不需要):encoding / errors / newline
    # gzip.open(filename, mode='rb', compresslevel=9, encoding=None, errors=None, newline=None)
    file = gzip.open("box.gz")

    # gzip.compress(data, compresslevel=9) // 壓縮
    bytes = gzip.compress(b"luzhuo.me")
    bytes = gzip.decompress(bytes)  # 解壓




if __name__ == "__main__":
    gzip_demo()

    # gzip_func()

# ================================



import bz2

def bz2_demo():
    # 單次壓縮
    bytes_com = bz2.compress(content)
    print("單次壓縮: ", bytes_com)
    bytes_decom = bz2.decompress(bytes_com)
    print("單次解壓: ", bytes_decom)

    # 增量壓縮
    bzcom = bz2.BZ2Compressor()
    bzdecom = bz2.BZ2Decompressor()

    bytes_com = bzcom.compress(content)
    bytes_com += bzcom.flush()
    print("增量壓縮: ", bytes_com)

    bytes_decom = bzdecom.decompress(bytes_com)
    print("增量解壓: ", bytes_decom)

    # 讀寫壓縮
    with open('file.txt', 'rb') as read, bz2.open('file.txt.gz', 'wb') as write:
        shutil.copyfileobj(read, write)
    with bz2.open('file.txt.gz', 'rb') as read, open('temp.txt', 'wb') as write:
        shutil.copyfileobj(read, write)



def bz2_func():
    '''
    使用bzip2壓縮演算法壓縮和解壓
    該模組的所有類都是執行緒安全的
    讀取和寫入壓縮檔案: open() BZ2File
    增量壓縮: BZ2Compressor BZ2Decopressor
    單次壓縮: compress() decompress()
    '''

    # 讀寫壓縮檔案
    # 二進位制或文字模式開啟bzip2壓縮檔案
    # bz2.open(filename, mode='r', compresslevel=9, encoding=None, errors=None, newline=None)
    file = bz2.open("box.bz2")

    # 單次壓縮
    # bz2.compress(data, compresslevel=9)
    bytes_com = bz2.compress(b'luzhuo.me')
    # bz2.decompress(data)
    bytes_decom = bz2.decompress(bytes_com)


    # 增量壓縮
    # class bz2.BZ2Compressor(compresslevel=9)
    bzcom = bz2.BZ2Compressor()

    bytes_com = bzcom.compress(b'luzhuo.me')  # 壓縮
    bytes_com = bzcom.flush()  # 完成壓縮, 返回剩餘的壓縮資料

    # 增量壓縮的解壓縮
    # class bz2.BZ2Decompressor
    bzdecom = bz2.BZ2Decompressor()

    # decompress(data, max_length=-1) // 解壓
    bytes_decom = bzdecom.decompress(bytes_com)
    boolean = bzdecom.eof  # 是否到達流結束標記




if __name__ == "__main__":
    bz2_demo()

    # bz2_func()


# =====================================

import lzma

def lzma_demo():

    # 增量壓縮
    lzmacom = lzma.LZMACompressor()
    data = lzmacom.compress(b'luzhuo')
    data += lzmacom.compress(b'.')
    data += lzmacom.compress(b'me')
    print("增量壓縮: ", data)

    # 讀寫
    with open('file.txt', 'rb') as read, lzma.open('file.txt.xz', 'wb') as write:
        shutil.copyfileobj(read, write)



def lzma_func():
    '''
    LZMA壓縮演算法壓縮和解壓縮
    LZMAFile執行緒不是安全的
    '''

    # 檔案
    # 讀取:format, filters, 寫入:format, check, preset, filters
    # lzma.open(filename, mode="rb", *, format=None, check=-1, preset=None, filters=None, encoding=None, errors=None, newline=None)
    f = lzma.open("box.xz")

    # lzma.compress(data, format=FORMAT_XZ, check=-1, preset=None, filters=None) // 壓縮
    bytes_com = lzma.compress(b'luzhuo.me')
    # lzma.decompress(data, format=FORMAT_AUTO, memlimit=None, filters=None) // 解壓
    bytes_decom = lzma.decompress(bytes_com)

    # lzma.is_check_supported(check) // 是否支援完整性檢查
    boolean = lzma.is_check_supported(lzma.CHECK_SHA256)


    # 壓縮物件 check:完整性檢查:CHECK_NONE,CHECK_CRC32(32位迴圈冗餘校驗),CHECK_CRC64(64位迴圈冗餘校驗),CHECK_SHA256(sha256)
    # preset: 壓縮級別[0,9]
    # class lzma.LZMACompressor(format=FORMAT_XZ, check=-1, preset=None, filters=None)
    lzmacom = lzma.LZMACompressor()

    bytes_com = lzmacom.compress(b"luzhuo.me")  # 壓縮
    bytes_com = lzmacom.flush()  # 完成壓縮

    # 解壓縮物件
    # class lzma.LZMADecompressor(format=FORMAT_AUTO, memlimit=None, filters=None)
    lzmadecom = lzma.LZMADecompressor()
    # decompress(data, max_length=-1)
    bytes_decom = lzmadecom.decompress(bytes_com)  # 解壓


    # 異常
    try: pass
    except lzma.LZMAError: pass  # 在壓縮或解壓或初始化時發生錯誤


if __name__ == "__main__":
    lzma_demo()

    # lzma_func()


# ================================================




import zipfile

def zip_demo():
    # 建立壓縮包
    with zipfile.ZipFile(r"file.zip", "a") as write:
        # 往壓縮包裡新增檔案
        write.write("file.txt")

        # 測試壓縮包
        error = write.testzip()
        if error:
            print("壓縮檔案錯誤: ", error)
            return

        # 列印壓縮包資訊
        write.printdir()
        write.close()

    # 解壓壓縮包
    with zipfile.ZipFile(r"file.zip", "r") as read:
        read.extractall("temp")
        read.close()


def zip_func():
    '''
    ZIP格式的壓縮和解壓
    不支援多磁碟ZIP檔案處理
    可以使用ZIP64擴充套件(>4G的ZIP檔案)
    可以解密經過加密的ZIP檔案,但是不能建立加密的ZIP檔案
    解密速度緩慢,因為是通過Python實現的
    '''

    # class zipfile.ZipFile // 讀寫的zip類
    # class zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0)) // Zip資訊

    zipfile.ZIP_STORED  # 儲存 方法常量0
    zipfile.ZIP_DEFLATED  # ZIP壓縮 方法常量8
    zipfile.ZIP_BZIP2  # BZIP2壓縮 方法常量12
    zipfile.ZIP_LZMA  # LZMA壓縮 方法常量14

    boolean = zipfile.is_zipfile(r"file.zip")  # 是否是zip檔案, 引數可為檔名 / 類檔案物件  (測試:.rar也是zip檔案)

    # --- class zipfile.ZipFile // 讀寫的zip類 ---
    # file:檔名 / 類檔案物件, mode:r, w, a, x(建立並寫入), compression:ZIP_STORED, ZIP_DEFLATED, ZIP_BZIP2, ZIP_LZMA, allowZip64:zip檔案大於2G時需要使用, 支援with
    # class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True)
    zipf = zipfile.ZipFile(r"file.zip")

    zipf.close()  # 關閉壓縮檔案,並寫入基本資訊
    lists = zipf.infolist()  # 壓縮包裡每個成員檔案的zipinfo物件
    lists = zipf.namelist()  # 壓縮包裡的成員檔案列表
    info = zipf.getinfo(lists[0])  # 獲取指定成員檔案的zipinfo物件
    # ZipFile.open(name, mode='r', pwd=None)  //開啟成員檔案, name:檔名 / zipinfo, pwd:密碼,用於加密了的檔案
    f = zipf.open(lists[0])
    # ZipFile.extract(member, path=None, pwd=None) // 提取成員檔案, member:檔名 / zipinfo, path:提取到指定目錄, 返回提取後的檔案絕對路徑
    path = zipf.extract(lists[0])
    # ZipFile.extractall(path=None, members=None, pwd=None) // 提取全部成員檔案, members:提取的成員,由namelist()返回的列表子集
    zipf.extractall()
    zipf.printdir()  # 列印(sys.stdout)成員檔案
    zipf.setpassword("123")  # 設定密碼, 用於提取加密檔案
    # ZipFile.read(name, pwd=None)  // 讀取指定成員檔案位元組內容, 壓縮檔案必須以 r / a 開啟
    zipf.read(lists[0])
    # ZipFile.write(filename, arcname=None, compress_type=None) // 追加成員檔案, filename:檔名, arcname:寫入壓縮包的名字(默認同filename)
    zipf.write("temp.txt")
    # ZipFile.writestr(zinfo_or_arcname, data[, compress_type]) // 成員檔案寫入字串, zinfo_or_arcname: 成員檔名 / zipinfo
    zipf.writestr(lists[0], b"luzhuo.me")  # 壓縮檔案必須以 w, a, x 開啟, 覆蓋寫入成員檔案, 並且最後要close()
    zipf.testzip()  # 測試壓縮包, 檢查CRC和檔案頭, 返回第一個壞檔案的名稱, 沒有壞檔案返回None
    zipf.debug  # 測試輸出, [0,3], 0(預設):無輸出, 3:最大輸出
    zipf.comment  # 註釋文字, 壓縮檔案以 w, x ,a 開啟, 不超過65535位元組的字元


    # ZipInfo類的例項由ZipFile物件的getinfo()和infolist()方法返回
    # --- class zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0)) // Zip資訊 ---
    info.filename  # 成員檔案檔名
    info.date_time  # 修改日期時間 (年, 月, 日, 時, 分, 秒)
    info.compress_type  # 壓縮型別
    info.comment  # 註釋
    info.compress_size  # 檔案壓縮後的大小
    info.file_size  # 檔案未壓縮時的大小

    info.extra  # 擴充套件欄位資料
    info.create_system  # 建立ZIP存檔的系統
    info.create_version  # PKZIP版本建立ZIP存檔
    info.extract_version  # PKZIP版本需要提取歸檔
    info.reserved  # 0
    info.flag_bits  # ZIP標誌
    info.volume  # 檔案頭的卷編號
    info.internal_attr  # 內部屬性
    info.external_attr  # 外部檔案屬性
    info.header_offset  # 位元組偏移到檔案頭
    info.CRC  # CRC - 32的未壓縮檔案



    # 異常
    try: pass
    except zipfile.BadZipFile: pass  # zip檔案引發的錯誤
    except zipfile.LargeZipFile: pass  #  需要ZIP64功能, 但未啟用


if __name__ == "__main__":
    zip_demo()

    # zip_func()


# ==============================================



import tarfile

def tarfile_demo():
    # 建立壓縮包
    with tarfile.open(r"file.tar", "w:gz") as write:
        # 往壓縮包裡新增檔案
        write.add("file.txt")

        # 測試壓縮包
        # 沒有提供測試函式

        # 列印壓縮包資訊
        write.list()

    # 解壓壓縮包
    with tarfile.open(r"file.tar", "r:gz") as read:
        read.extractall("temp")


def tarfile_func():
    '''
    tar檔案的壓縮和解壓
    同時支援gzip / bz2 / lzma的相關操作
    '''

    # mode:
    # 'r''r:*': 開啟(預設)
    # 'r:': 無壓縮開啟
    # 'r:gz': gzip壓縮開啟
    # 'r:bz2': bzip2壓縮開啟
    # 'r:xz': lzma壓縮開啟
    # 'x''x:': 建立無壓縮tarfile
    # 'x:gz': 建立gzip壓縮tarfile
    # 'x:bz2': 建立bzip2壓縮tarfile
    # 'x:xz': 建立lzma壓縮tarfile
    # 'a''a:': 開啟
    # 'w''w:': 未壓縮的寫入(注:存在則覆蓋)
    # 'w:gz': gzip壓縮寫入
    # 'w:bz2':bzip2壓縮寫入
    # 'w:xz': lzma壓縮寫

    # 'r|*': 讀取流
    # 'r|': 讀取未壓縮流
    # 'r|gz': 讀取gzip壓縮流
    # 'r|bz2': 讀取bzip2壓縮流
    # 'r|xz': 讀取lzma壓縮流
    # 'w|': 寫入未壓縮流
    # 'w|gz': 寫入gzip壓縮流
    # 'w|bz2': 寫入bzip2壓縮流
    # 'w|xz': 寫入lzma壓縮流

    tarfile.ENCODING  # 編碼
    tarfile.USTAR_FORMAT  # POSIX.1 - 1988格式
    tarfile.GNU_FORMAT  # GNU tar格式
    tarfile.PAX_FORMAT  # POSIX.1 - 2001格式
    tarfile.DEFAULT_FORMAT  # GNU_FORMAT(預設格式)

    # tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs) // fileobj: 二進位制file-object  支援with
    tarf = tarfile.open(r"file.tar")

    tarfile.is_tarfile(r"file.tar")  # 是否是tar檔案


    # class tarfile.TarFile // tarfile.open()返回的物件
    # mode: r, a, w, x, fileobj:file-obj, format:USTAR_FORMAT,GNU_FORMAT,PAX_FORMAT, tarinfo:可替換預設的TarInfo, dereference:True新增檔案,False新增軟硬連結, ignore_zeros: 是否忽略空塊(損壞的檔案設為False), debug:[0,3]
    # class tarfile.TarFile(name=None, mode='r', fileobj=None, format=DEFAULT_FORMAT, tarinfo=TarInfo, dereference=False, ignore_zeros=False, encoding=ENCODING, errors='surrogateescape', pax_headers=None, debug=0, errorlevel=0)

    # 類方法
    tarfile.TarFile.open(...)  # 同 tarfile.open()

    tarinfo = tarf.getmember("file.txt")  # 獲取指定成員檔案的TarInfo物件, 未找到KeyError
    lists = tarf.getmembers()  # 成員檔案TarInfo列表
    lists = tarf.getnames()  # 成員檔名字列表
    # TarFile.list(verbose=True, *, members=None) // 列印目錄, verbose:是否詳細, members:可選成員,getmembers()的子集
    tarf.list()
    tarf.next()  # 下個檔案的TarInfo
    # TarFile.extractall(path=".", members=None, *, numeric_owner=False) // 解壓全部
    tarf.extractall()
    # TarFile.extract(member, path="", set_attrs=True, *, numeric_owner=False) // 解壓指定成員檔案
    tarf.extract(lists[0])
    bf_read = tarf.extractfile(lists[0])  # 提取成員檔案,返回io.BufferedReader物件
    # name: 檔名, arcname:儲存的成員檔名, exclude: def exclude(filename){已棄用}:return True排除,False新增, filter:def filter(tarinfo):return Tarinfo新增,None排除
    # TarFile.add(name, arcname=None, recursive=True, exclude=None, *, filter=None)
    tarf.add("temp.txt")
    # TarFile.addfile(tarinfo, fileobj=None) // 新增tarinfo
    tarf.addfile(tarf.gettarinfo())
    # TarFile.gettarinfo(name=None, arcname=None, fileobj=None) // 獲取TarInfo,可通過addfile()修改, 非r模式
    tarinfo = tarf.gettarinfo(arcname="file.txt")
    tarf.close()  # 關閉, 並寫入兩個零塊

    tarf.pax_headers  # pax全域性頭的鍵值對的字典


    # --- TarInfo ---
    # 建立
    # class tarfile.TarInfo(name="")
    tarinfo = tarfile.TarInfo(name="temp.txt")

    # 類方法
    # TarInfo.frombuf(buf, encoding, errors) // 從字元緩衝區建立TarInfo
    tarinfo = tarfile.TarInfo.fromtarfile(tarf)  # tarfile讀取下個成員,返回TarInfo
    # TarInfo.tobuf(format=DEFAULT_FORMAT, encoding=ENCODING, errors='surrogateescape') // 從TarInfo建立字元緩衝區

    tarinfo.name  # 檔名
    tarinfo.size  # 大小(bite)
    tarinfo.mtime  # 修改時間戳
    tarinfo.mode  # 許可權

    tarinfo.type  # 型別:REGTYPE,AREGTYPE,LNKTYPE,SYMTYPE,DIRTYPE,FIFOTYPE,CONTTYPE,CHRTYPE,BLKTYPE,GNUTYPE_SPARSE
    tarinfo.linkname  # 目標檔名
    tarinfo.uid  # 使用者id
    tarinfo.gid  # 使用者組
    tarinfo.uname  # 使用者名稱
    tarinfo.gname  # 使用者組名
    tarinfo.pax_headers  # pax擴充套件頭的鍵值對的字典

    tarinfo.isfile()  # 是否是檔案
    tarinfo.isreg()  # 同isfile
    tarinfo.isdir()  # 是否是目錄
    tarinfo.issym()  # 是否是符號連結
    tarinfo.islnk()  # 是否是硬連結
    tarinfo.ischr()  # 是否是字元裝置
    tarinfo.isblk()  # 是否是塊裝置
    tarinfo.isfifo()  # 是否是FIFO
    tarinfo.isdev()  # 是否是字元裝置,塊裝置或FIFO之一


    # 異常
    try: pass
    except tarfile.TarError: pass  # tarfile異常的基類
    except tarfile.ReadError: pass  # tar檔案開啟時引發的異常
    except tarfile.CompressionError: pass  # 無法解碼
    except tarfile.StreamError: pass # 資料流異常
    except tarfile.ExtractError: pass  # TarFile.extract()(解壓)引發的異常
    except tarfile.HeaderError: pass  # TarInfo.frombuf()(緩衝區無效)引發的異常


    # 命令列模式(python -m tarfile -l file.tar)
    # -l <tarfile>
    # --list <tarfile>
    # 列出成員檔案
    #
    # -c <tarfile> <source1> <sourceN>
    # --create <tarfile> <source1> <sourceN>
    # 建立, tarfile:壓縮包名, source1:資源名...
    #
    # -e <tarfile> [<output_dir>]
    # --extract <tarfile> [<output_dir>]
    # 解壓, output_dir:解壓目錄
    #
    # -t <tarfile>
    # --test <tarfile>
    # 測試
    #
    # -v
    # --verbose
    # 列印命令詳情



if __name__ == "__main__":
    tarfile_demo()

    # tarfile_func()


相關推薦

Python3 壓縮壓縮(zlib / gzip / bz2 / lzma / zipfile / tarfile)

本文由 Luzhuo 編寫,轉發請保留該資訊. 原文: http://blog.csdn.net/Rozol/article/details/72672703 以下程式碼以Python3.6.1為例 Less is more! 檔案的歸檔 (各種格式的壓縮 / 解壓縮

Linux 壓縮壓縮工具gzip/gunzip

Linux gzip/gunzip簡單操gzip會壓縮原文件並將原文件刪除-d 解壓縮選項 類似於gunzip-# 指定壓縮比 默認是6-c 將壓縮內容輸出到標準輸出上,並保留原文件出現了壓縮文件,但是原文件沒有了。現在解壓縮解壓縮完成後,壓縮文件消失了。上面這個例子是將原文件壓縮後的字符輸出到標準輸出上就是

頁面Gzip壓縮壓縮工具類GZIPUtils

問題: F12能看到Response Headers的資訊,一般情況下,Content-Encoding為gzip時就表明該檔案是一個壓縮過的。 需求: 需要過濾該頁面,並且對內容進行修改,但是是一個壓縮格式的修改不了! 解決方案: 對response的gzip格式進行

Linux:03---Terminal高階命令(檔案的壓縮壓):gzip、bzip2、tar

提示: gzip、bzip2:只能用於單個檔案的壓縮與解壓,不能壓縮或者解壓目錄 tar可用於多個檔案的壓縮與解壓 一般情況下:小檔案的壓縮用gzip,大檔案的壓縮用bzip2 一、gzip 1.概念:對字尾為.gz的檔案進行壓縮或者解壓  

給Python中通過urllib2.urlopen獲取網頁的過程中,新增gzip壓縮壓縮支援

之前已經實現了用Python獲取網頁的內容,相關已實現程式碼為: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

tar/gz/bz/gz2/bz2...壓縮壓縮

*.gz2用gunzip2 *.gz2 For examplegunzip2 *.tar.gz2,解出一個*.tar檔案, 然後tar -vxf *.tar即可 .rar格式 解壓:[*******]$ rar a FileName.rar 壓縮:[*******]$ rar e FileName.rar

Linux gzip gunzip(壓縮壓縮)命令

gzip:壓縮命令        格式:gzip 原始檔   (不保留原始檔)        例:        格式:gzip -r 目錄   (只能壓縮目錄下的檔案,不能壓縮目錄)        例:gunzip:解壓縮命令            格式:gunzip  壓

Android 利用Java實現壓縮壓縮(zip、gzip)支援中文路徑

  zip扮演著歸檔和壓縮兩個角色;gzip並不將檔案歸檔,僅只是對單個檔案進行壓縮,所以,在UNIX平臺上,命令tar通常用來建立一個檔案檔案,然後命令gzip來將檔案檔案壓縮。   Java I/O類庫還收錄了一些能讀寫壓縮格式流的類。要想提供壓縮功能,只要把它們包

【轉】C++ ZLib壓縮壓縮

#include "stdafx.h" #include "zlib.h" #include <iostream> using namespace std; #pragma com

qt 呼叫zlib壓縮壓縮功能

2  QT 中如何呼叫zip進行解壓縮     ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));     從壓縮檔案中讀取給定大小的解壓位元組數。     如果輸入檔案不是gz

使用tar和gzip對某資料夾內的某型別檔案進行壓縮壓縮

有時候,需要對某個資料夾內的某個型別的檔案進行壓縮。由於使用tar壓縮時會把絕對路徑也壓縮排去,這時解壓縮則會多出這些資料夾結構,很麻煩,那麼使用如下命令: tar -C /dir1/dir2 -czvf /dir3/dir4/my.tar.gz *.ext1 解釋如下

#11 壓縮壓縮

壓縮與解壓縮Linux系統中常用的壓縮和解壓縮工具;壓縮:以時間換空間的一種操作;壓縮的原理:標記和替換;壓縮比:壓縮之前與壓縮之後的文件的大小的比值;純文本文件壓縮比較大視頻、圖像等文件壓縮比小能夠實現壓縮功能的工具:compress/uncompress: .Z擴展名為紅色的,沒有特殊含義(系統自帶的工具

壓縮壓縮

zcat ati resolved com .net 信息 註意 mod unzip 1、gzip 描述: 壓縮與解壓縮gz文件 用法: gzip [選項] [文件名稱] 選項: -d 解壓 擴展: 1)gunzip 解壓縮gz文件 示例: 1)壓縮jkl.txt文件 2

Centos常用命令之:壓縮壓縮

replace 那種 在線安裝 後綴 unzip .com cal gunzip 基本上   在Linux中,壓縮文件的擴展名主要是:[*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2],雖然,我們知道,在LInux中,文件的擴展名沒有什麽作用,但是由

linux 壓縮壓縮

linux 解壓 nbsp 壓縮與解壓縮 -c /tmp tmp .gz 目錄 壓縮 tar -zcvf 壓縮文件名 壓縮源目錄的絕對路勁 例如: tar -zcvf test.tar.gz /tmp 解壓縮 tar -zxvf 壓縮源文件 -C 解壓目錄 tar -

PclZip library能夠壓縮壓縮Zip格式

span 例如 陣列 www. 兩個 hellip sizeof 版本 mtime PclZip介紹 PclZip library能夠壓縮與解壓縮Zip格式的壓縮檔(WinZip、PKZIP);且能對此類類檔案進行處理,包括產生壓縮檔、列出壓縮檔的內容以及解壓 縮檔案等等。

Linux壓縮壓縮工具

tar zip bzip2 gzip 壓縮工具 壓縮、加壓縮及歸檔工具壓縮文件的時候可能會丟失一些屬性,ACL屬性就會丟失以下為壓縮單個文件使用的工具compress "要壓縮的文件"(默認會刪除原文件)-d 解壓縮,相當於uncompress-c 結果輸出至標準輸出,

linux中的常用壓縮壓縮命令

tar post 文件名 壓縮文件 body 比較 目錄名 解壓 class linux中常用的壓縮格式有 .zip .gz .bz2 .tar.gz .tar.bz2 一、.zip 1.命令格式 zip 壓縮文件名 源文件名 (壓

Linux文件歸檔壓縮壓縮

log src 指定 技術分享 windows 文件名 文件歸檔 linux 文件壓縮 歸檔管理 tar [參數] xxx.tar 文件 –c 生成檔案文件,創建打包文件 -v 列出歸檔解檔的詳細過程,顯示進度 -f 指定檔案文件名稱,f後一定是.tar文件 -t 列

Linux 壓縮壓縮工具之xz

Linux xz的簡單操作-d 解壓縮 -# 指定壓縮比 -k 保留原文件現在壓縮並保留原文件也可以通過unxz解壓縮不解壓查看文件內容Linux 壓縮與解壓縮工具之xz