Python — lzma压缩

一、异常

lzma这个包中只提供了一个异常:lzma.LZMAError。这个异常只有如下情况会抛出:

  • 压缩或解压时发生错误

  • 初始化压缩器与解压器的状态时发生错误

二、读写压缩文件

1、接口1

lzma中提供了一个借口,专门用来访问压缩文件:lzma.open(filename, mode="rb")

(1).filename参数,通常是一个字符串表示的文件路径

(2).mode参数是文件模式,文件模式可以是:

  • 文本模式:`"rt", "wt", "xt", "at"

  • 二进模式:"r", "rb", "w", "wb", "x", "xb", "a" , "ab"

更多Python视频、源码、资料加群683380553免费获取

2、例子1

(1).创建压缩文件

Python — lzma压缩

(2).读取压缩文件

Python — lzma压缩

除了直接读取意外,我们还可以使用一个解压缩软件来解压缩我们创建的文件

Python — lzma压缩

然后使用文本编辑器打开我们解压的软件,看看编码是不是正确

Python — lzma压缩

3、接口2

lzma.compress(data)

该函数可以压缩数据(字节对象),反悔一个数据被压缩的字节二进制对象。

lzma.decompress(data)

解压一个已经被压缩过后的数据(字节对象),反悔一个解压的二进制数据对象。

注意: 如果数据是几个独立的压缩流的连接,那么将会一起解压所有这些流,并且反悔结果的连接

4、例子2

(1).在内存中进行压缩

Python — lzma压缩

可以看到,一个原来2554字节的文件,被压缩到只有768字节

注意:只有文件有一定大小的时候才能体现出压缩的优势。如果对一个普通的字符串压缩,可能反而变大

(2).解压一个已经被压缩的数据

Python — lzma压缩

如此,就完成了我们对数据的压缩和解压。

 

 

Python提供了一个标准库`lzma`来实现LZMA压缩和解压缩。要使用该库,需要先导入它: ```python import lzma ``` 接下来,我们可以使用`lzma.compress()`函数来压缩数据,使用`lzma.decompress()`函数来解压缩数据。下面是一个简单的示例: ```python # 压缩数据 data = b'Hello, world!' compressed_data = lzma.compress(data) # 解压数据 decompressed_data = lzma.decompress(compressed_data) # 打印结果 print(f'data: {data}') print(f'compressed_data: {compressed_data}') print(f'decompressed_data: {decompressed_data}') ``` 输出: ``` data: b'Hello, world!' compressed_data: b'\xfd7zX\x00\x00t\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x00\x02\xff\x06\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x18\x0fZS\x84\x00\x00\x00' decompressed_data: b'Hello, world!' ``` 可以看到,我们成功地将数据压缩和解压缩了。需要注意的是,`lzma.compress()`和`lzma.decompress()`函数都接受字节串作为输入。如果你的数据是字符串类型,需要将其转换为字节串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值