gzip模块能够直接压缩和解压缩bytes-like类型的数据,同时也能实现对应格式文件的压缩与解压缩

一、数据压缩与解压缩

  • 压缩

    • 函数-gzip.compress(data, compresslevel=_COMPRESS_LEVEL_BEST, mtime=None)

      • data:需要压缩的bytes-like类型数据
      • compresslevel参数:可选,用数字0-9表示压缩级别,默认最高压缩级别9,0表示不压缩
  • 解压缩

    • 函数-gzip.decompress(data)

  • 示例:

    import gzip
    
    test_data = b'gzip test data'
    gzip_data = gzip.compress(test_data) # 压缩数据
    ungz_data = gzip.decompress(gzip_data) #解压缩数据
    print(gzip_data) #输出b'\x1f\x8b\x08\x00\xddOa`\x02\xffK\xaf\xca,P(I-.QHI,I\x04\x00*\xfb\x85\x89\x0e\x00\x00\x00'
    print(ungz_data) #输出b'gzip test data',和test_data一致

     

二、文件压缩与解压缩

  • 使用函数-gzip.open( filename, mode=”rb”, compresslevel=_COMPRESS_LEVEL_BEST, encoding=None, errors=None, newline=None)

    • 压缩文件打开后,拥有普通文件对象一样的方法,如read、readline、readlines、write、writelines等。
    • 读取内容,可以获得解压缩后的数据
    • 写入内容,能够完成对数据的压缩
  • 使用类-gzip.GzipFile()

    • 初始化对象的方法__init__:(self, filename=None, mode=None,compresslevel=_COMPRESS_LEVEL_BEST, fileobj=None, mtime=None)
    • 用法与gzip.open()类似,可传入文件名或文件对象
  • 示例:

    #coding=utf-8
    import gzip
    
    def gz(filename):
        '''压缩文件'''
    
        gz_filename = filename + '.tgz' #压缩后文件名
        f_ungz = open(filename,'rb') # 打开未压缩文件对象
        f_gz = gzip.open(gz_filename,'wb') # 使用open函数创建压缩文件对象
        # f_gz = gzip.GzipFile(gz_filename,'wb') 使用GzipFile类创建压缩文件对象
        f_gz.writelines(f_ungz) #写入压缩内容
        f_ungz.close()
        f_gz.close()
    
    def ungz(gz_filename):
        '''解压缩文件'''
    
        ungz_filename = gz_filename.replace('.tgz','').replace('.tar.gz','')# 解压缩后文件名
        f_gz = gzip.GzipFile(gz_filename)#使用GzipFile类创建压缩文件对象
        # f_gz = gzip.open(gz_filename) 使用open函数打开压缩文件对象
        f_ungz = open(ungz_filename,'wb') #新建未压缩文件对象
        f_ungz.writelines(f_gz) #写入解压缩后的文件内容
        f_ungz.close()
        f_gz.close()

     

版权声明:本文为Elite-Wang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Elite-Wang/p/14591861.html