到heatshrink库的Python绑定
heatshrink2的Python项目详细描述
缩热收缩
在Python3中使用Heatshrink algorithm进行压缩。在
安装
来自PyPI:
$ pip install heatshrink2
用法
文件/流
文件接口试图模仿内置的行为
文件对象和其他类似文件的对象(例如bz2.BZ2File
),
因此,您可以期望在file
中实现的所有方法也
可用。在
您可以使用open
函数打开热缩文件:
您也可以直接使用HeatshrinkFile
:
>>>fromheatshrink2importHeatshrinkFile>>>withHeatshrinkFile('data.bin')asfin:...print(fin.read(256))...b'Is there anybody in there?'>>>withHeatshrinkFile('data.bin')asfin:...forlineinfin:...print(line)...b'Is there anybody in there?'>>>
字节串
编码器接受任何iterable并返回一个字节字符串 包含编码(压缩)数据的。在
>>>importheatshrink2>>>heatshrink2.compress(b'a string')b'\xb0\xc8.wK\x95\xa6\xddg'>>>
解码器接受任何实现缓冲协议的对象,并且 返回解码数据的字节表示形式。在
>>>importheatshrink2>>>heatshrink2.decompress(b'\xb0\xc8.wK\x95\xa6\xddg')b'a string'>>>
参数
编码器和解码器都允许提供window_sz2
和
lookahead_sz2
关键字:
window_sz2
-窗口大小决定了
可以在输入中搜索重复的模式。一个8人的窗口
仅使用256字节(2^8),而10的窗口_sz2将使用1024个字节
(2^10)。后者使用更多内存,但也可能压缩更多
通过检测更多的重复。在
lookahead_sz2
-lookahead大小决定了最大长度
对于发现的重复模式。如果lookahead_sz2为4,则
“a”字符的50字节运行将表示为几个重复的字符
16字节模式(2^4是16),而更大的lookahead_sz2可能是
能够一次代表一切。用于
lookahead大小是固定的,因此过大的lookahead大小可以减小
通过向小模式添加未使用的大小位来压缩。在
input_buffer_size
-用于
解码器。这会影响解码器在一个单独的任务中可以完成的工作量
一个更大的缓冲区将使用更多的内存。非常小的
由于大量的挂起/恢复,缓冲区(比如1字节)将增加开销
函数调用,但不应更改数据压缩的效果。在
查看heatshrink configuration page了解更多信息 细节。在
更多的用例,请参考tests folder。在
命令行
命令行工具可以压缩和解压缩文件。在
下面的compress和解压缩子命令就是一个例子。在
$ ls -l tests/files/foo.txt -rw-rw-r-- 1 erik erik 3970 jan 5 12:23 tests/files/foo.txt $ python -m heatshrink2 compress tests/files/foo.txt foo.hs $ ls -l foo.hs -rw-rw-r-- 1 erik erik 2727 jan 5 12:24 foo.hs $ python -m heatshrink2 decompress foo.hs foo.txt $ cmp tests/files/foo.txt foo.txt
基准
基准测试针对~6MB文件检查压缩/解压缩:
$ python scripts/benchmark.py
测试
运行测试与执行以下操作一样简单:
$ python setup.py test
许可证
ISC许可证
- 项目
标签: