python绑定到heatshrink库
Heatshrink的Python项目详细描述
python绑定到heatshrink LZSS compression library。
安装
来自PYPI:
$ easy_install heatshrink $ pip install heatshrink
手动安装:
$ python setup.py install
用法
文件/流
文件接口试图模拟内置文件对象的行为
以及其他类似文件的对象(例如bz2.BZ2File
),因此您可以期望所有方法
也可以在file
中实现。
您可以使用open
函数打开热缩文件:
>>> import heatshrink >>> with heatshrink.open('data.bin', mode='wb') as fp: ... fp.write("Is there anybody in there?")
您也可以直接使用EncodedFile
:
>>> from heatshrink import EncodedFile >>> with EncodedFile('data.bin') as fp: ... # Read a buffer ... print('Buffered: %r' % fp.read(256)) ... # Iterate through lines ... for line in fp: ... print('Read line: %r' % line)
字节字符串
编码器接受任何iterable并返回一个字节字符串 包含编码(压缩)数据的。
>>> import heatshrink >>> encoded = heatshrink.encode('a string') >>> type(encoded) <type 'str'> # <class 'bytes'> in Python 3 >>> encoded '\xb0\xc8.wK\x95\xa6\xddg'
解码器接受实现缓冲区协议的任何对象,并且 返回解码数据的字节表示形式。
>>> import heatshrink >>> decoded = heatshrink.decode(b'\xb0\xc8.wK\x95\xa6\xddg') >>> type(decoded) <type 'str'> # <class 'bytes'> in Python 3 >>> decoded 'a string'
参数
编码器和解码器都允许提供window_sz2
和lookahead_sz2
关键字:
window_sz2
-窗口大小决定了在输入中搜索重复模式的距离。8的窗口sz2将只使用256字节(2^8),而10的窗口sz2将使用1024字节(2^10)。后者使用更多的内存,但也可以通过检测更多的重复来更有效地压缩。
lookahead_sz2
-前向大小决定找到的重复模式的最大长度。如果lookahead_sz2是4,则50字节的“a”字符运行将表示为多个重复的16字节模式(2^4是16),而较大的lookahead_sz2可以同时表示所有字符。用于前向大小的位数是固定的,因此过大的前向大小可以通过向小模式添加未使用的大小位来减少压缩。
input_buffer_size
-解码器使用的输入缓冲区有多大。这会影响解码器在一个步骤中可以做多少工作,而较大的缓冲区将使用更多的内存。一个非常小的缓冲区(例如,1字节)会由于大量的suspend/resume函数调用而增加开销,但不应该改变数据压缩的程度。
查看heatshrink configuration page了解更多详细信息。
有关更多用例,请参阅tests folder。
基准
基准测试检查对~6MB文件的压缩/解压缩:
$ python bench/benchmarks.py
测试
运行测试和执行测试一样简单:
$ python setup.py test
许可证
ISC许可证
推荐PyPI第三方库
- 热门话题
- Hibernate:jpamodelgen生成java而不是类 java如何在第二次活动结束后显示广告? javascript如何在linux或windows上将java导出到jar java One ArrayList添加了2个不同的选项 AmazonWeb服务如何在java中使用AWS Textract检索pdf中存在的表 java为什么RecycleView中的水平项在单击时不起作用? java计算如果存在映射 java在捕获的组上应用正则表达式 如何使用Java在MySQL的同一个表中插入来自不同类的值 java字符串中最常见的字母(大写和小写) Spring SessionBean实例正在由java中的多个用户共享 使用Spring Boot将@WebInitParam中的值外部化 java一创建线程就开始执行(多线程) java是安卓所需的系统权限。意图行动给你打电话?