python绑定到heatshrink库

Heatshrink的Python项目详细描述


python绑定到heatshrink LZSS compression library

支持的版本:
python>;=2.6–完全
python 3–实验性的

测试平台:
*操作系统x>;10.10
*debian 8
*freebsd 10

安装

来自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_sz2lookahead_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许可证

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何为本地和Jenkins执行实现Java配置?   多日志文件创建的java log4j滚动追加器问题   安卓 java替换列表内容或替换引用值本身   java JOptionPane如何不尊重同步?   java Spring状态机访问eventNotAccepted侦听器中的StateContext   Java中的快速排序算法程序   java私有静态最终双精度为0   java中ByteBuffer的clear()方法   同步Java可重入锁的正确锁定/解锁用法   java拦截Couchbaselite中的CRUD操作   用于搜索广告的active directory Java程序   java为什么netty的handler成员变量在使用新handler()处理请求时不重置   java Mockito验证(…)fails“实际上,与此模拟没有任何交互。”按顺序在多个测试运行中   java为什么我的Alarmmanager在终止我的应用程序后不工作?   java如何正确排序groovy列表   一段时间后,java OAuth“401:无效凭据”   使用jtable和数据库在javaswing中进行分页   java如何在Android中将ASCII字符转换为字符串?   java如何运行。来自Javascript的jar方法   java Apache vfs:获取目录的最新更改文件(sftp)