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第三方库
- 热门话题
- 如何为本地和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)