我是靠谱客的博主 机灵白羊,最近开发中收集的这篇文章主要介绍Python模块 zlib压缩和解压文件的简单例子/开箱即用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

直接用网上的代码最常用的那段代码,但是有BUG,跑不起来,所以改写了一下,包括读写的次数控制,错误的捕获抛出,Python3可以直接跑.

详细代码

import os
import zlib
import math

BUFFER_SIZE = 1024

def compress(infile, dstfile):
    filesize = os.path.getsize(infile)
    read_times = math.ceil(filesize / BUFFER_SIZE)  # 读取次数
    zip = zlib.compressobj(level=9, wbits=15, memLevel=9)

    try:
        dstfile = open(dstfile, "wb")
        with open(filename, "rb") as infile:
            for i in range(read_times):
                zip_buffer = zip.compress(infile.read(BUFFER_SIZE))
                dstfile.write(zip_buffer)
            dstfile.write(zip.flush())
    except:
        raise
    finally:
        dstfile.close()
        return 1


def decompress(zipfile, dstfile):
    filesize = os.path.getsize(zipfile)
    read_times = math.ceil(filesize / BUFFER_SIZE)
    dzip = zlib.decompressobj()

    try:
        dstfile = open(dstfile, "wb")
        with open(zipname, "rb")as zipfile:
            for i in range(read_times):
                file_buffer = dzip.decompress(zipfile.read(BUFFER_SIZE))
                dstfile.write(file_buffer)
    except:
        raise
    finally:
        dstfile.close()
        return 1


if __name__ == '__main__':
    filename = "demo.jpg"
    zipname = "demo.gzip"
    compress(filename, zipname)
    d_zipname = "demo.gzip"
    d_filename = "d_demo.jpg"
    decompress(d_zipname, d_filename)

比较源文件和解压文件的一致性

def check_consistance(filename1, filename2):
    file1_size = os.path.getsize(filename1)
    with open(filename1, "rb") as file1:
        buffer1 = file1.read(file1_size)
    file2_size = os.path.getsize(filename2)
    with open(filename2, "rb") as file2:
        buffer2 = file2.read(file2_size)
    if buffer1 == buffer2:
        return True
    else:
        return False
print(check_consistance(filename,d_filename))  

最后

以上就是机灵白羊为你收集整理的Python模块 zlib压缩和解压文件的简单例子/开箱即用的全部内容,希望文章能够帮你解决Python模块 zlib压缩和解压文件的简单例子/开箱即用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(190)

评论列表共有 0 条评论

立即
投稿
返回
顶部