用于python的lz4frame库(通过c绑定)
py-lz4framed的Python项目详细描述
概述
这是一个用于python的LZ4帧压缩库 v3.2+(和2.7+),绑定到yann collet的LZ4 C implementation。
安装/包装
# To get from PyPI pip3 install py-lz4framed # To only build extension modules inline (e.g. in repository) python3 setup.py build_ext -i # To build & install globally python3 setup.py install
注释
- 上面以及所有其他使用命令的python3也应该运行 使用v2.7+
- 此模块也可通过Anaconda (conda-forge)获得 (带有Linux、OSX和Windows的二进制文件)
- pypi版本用Iotic Labs Software release signing key 签名
用法
单功能操作:
importlz4framedcompressed=lz4framed.compress(b'binary data')uncompressed=lz4framed.decompress(compressed)
迭代压缩(文件或bytesio实例):
withopen('myFile','wb')asf:# Context automatically finalises frame on completion, unless an exception occurswithCompressor(f)asc:try:while(...):c.update(moreData)exceptLz4FramedNoDataError:pass
从类似文件的对象解压缩:
withopen('myFile','rb')asf:try:forchunkinDecompressor(f):decoded.append(chunk)exceptLz4FramedNoDataError:# Compress frame data incomplete - error case...
另请参见lz4framed/__main__.py 示例用法。
文件
importlz4framedprint(lz4framed.__version__,lz4framed.LZ4_VERSION,lz4framed.LZ4F_VERSION)help(lz4framed)
命令行实用程序
python3 -mlz4framed USAGE: lz4framed (compress|decompress)(INFILE|-)[OUTFILE](De)compresses an lz4 frame. Input is read from INFILE unless set to '-', in which case stdin is used. If OUTFILE is not specified, output goes to stdout.
为什么?
唯一一个现有的LZ4帧互操作实现,我知道 写作时 (lz4tools)具有以下特性 限制:
- 不完整的实现,例如引用和内存泄漏 失败时
- 缺少单元测试
- 非线程安全
- 在低水平(de)压缩操作期间不释放GIL
- 没有满足外部项目的要求