到heatshrink库的Python绑定

heatshrink2的Python项目详细描述


buildstatusappveyorcoverage

缩热收缩

在Python3中使用Heatshrink algorithm进行压缩。在

安装

来自PyPI:

$ pip install heatshrink2

用法

文件/流

文件接口试图模仿内置的行为 文件对象和其他类似文件的对象(例如bz2.BZ2File), 因此,您可以期望在file中实现的所有方法也 可用。在

您可以使用open函数打开热缩文件:

^{pr2}$

您也可以直接使用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_sz2lookahead_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许可证

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

推荐PyPI第三方库


热门话题
安卓中通过TCP发送时java文件损坏   Java测试预期=异常失败,断言错误   java ssh4 LazyInitializationException   java是否可以在集合中添加重复项?   java是一个免费的开源数据库管理工具   java是否可以在导出的html中嵌入图像   编译器构造解释一些东西,并用Java运行生成的字节码?   java KeyPairGenerator未生成随机密钥   java使用正则表达式生成字符串而不是匹配字符串   java中的多线程线程间通信   具有复合密钥的java Hibernate合并问题   java不能在MainActivity类之外使用SharedReferences变量   正在获取切割/零件异常消息。使用java Spring ControllerAdvice   java tomcat漏洞讨论   javascript在Java中实现“system”命令   java如何在JUnit5*中加载*Spring测试上下文之前获取回调?   java bluej关于缺少返回语句   JavaSpringBoot@ModelAttribute包含使用字符串键的其他模型   从可选中抛出异常。ifPresent()Java 8