流库的python实现

pystream-protobuf的Python项目详细描述


Build StatusPyPI ReleasePyPI StatusPythonLicense

pystream

python实现stream library。它 启用protobuf消息的流处理;即多个protobuf消息 可以使用此库将(读取)写入(从)流。可能是 用于分析流库编码的所有文件并编写protobuf 通过相同编码将实例放入文件中。参考图书馆 GitHub page了解有关 格式化。

安装

您可以使用pip

安装pystream
pip install pystream-protobuf

用法

读数

下面是一个示例代码,用于读取包含一组protobuf消息的文件(这里 是一组VG的对齐对象,所谓 gam文件,定义为here)。 alignment类只是一个例子,它可以是任何protobuf消息。 它产生存储在文件中的protobuf对象:

importstreamimportvg_pb2alns=[aforainstream.parse('test.gam',vg_pb2.Alignment)]

输入流可以传递给方法parse

importstreamimportvg_pb2# ... an already existing file-like object `f` as input stream.alns=[aforainstream.parse(f,vg_pb2.Alignment)]

为了更好地控制流的打开和数据的读取, 可以使用低级方法open

importstreamimportvg_pb2alns_list=[]withstream.open('test.gam','rb')asistream:fordatainistream:aln=vg_pb2.Alignment()aln.ParseFromString(data)alns_list.append(aln)

可以通过显式调用close方法来关闭流,在这种情况下 不使用with语句打开流(请参阅测试中的更多示例 包装)。

方法open不限于文件,因为它可以用于任何二进制文件 溪流。可以通过向方法传递文件对象而不是文件名来完成 open或直接到Stream类:

# ... an already existing file-like object `f` as input stream.withstream.open(fileobj=f,mode='rb')asistream:# ... continue using istream

写作

多个protobuf对象可以通过 调用dump函数。将对齐对象列表写入 文件名test.gam

importstreamstream.dump('test.gam',*objects_list,buffer_size=10)

如果希望写入现有的输出流,则^ {CD9>}方法接受任何 将类似文件的对象作为输出流:

importstream# ... an already existing file-like object `f` as input stream.stream.dump('test.gam',*objects_list,buffer_size=10)

或者使用open方法进行低级控制。这个例子附加了一组 发送到输出流的消息:

importstreamwithstream.open('test.gam','ab')asostream:ostream.write(*objects_list)ostream.write(*another_objects_list)

与读取类似,open方法接受任何输出的fileobj参数 流和流可以通过显式调用close来关闭; 尤其是在不使用with语句打开流时。

更多功能

可选gzip压缩

Stream library编码的流是 gzip已压缩。当 打开一条小溪。

缓冲写入

默认情况下,每个调用上提供的所有protobuf消息对象都写入 消息组(有关 编码详细信息)。消息可以在 尽可能固定大小的组。缓冲区的大小可以通过 关键字参数buffer_sizeopendump方法,或者流类是 构造(默认大小为0--表示没有缓冲区)。

分组消息

通过设置将消息写入流时,可以将消息按不同大小分组 缓冲区大小足够大或无限大(-1)并调用flush方法 任何时候需要的流类。

组分隔符

对象组可以由所选的分隔符分隔(或默认情况下 None)从流中读取时。有时,它可以帮助我们确定 默认情况下对库用户隐藏的组。此功能可以是 通过在构造流时将group_delimiter设置为True来启用 引用或打开流。分隔符类也可以由 delimiter_cls

开发

如果您使用源代码,则需要构建包:

python setup.py build

测试模块中需要在运行测试之前编译的proto文件 案例为此,需要有google protobuf编译器(>;=3.0.2) 安装。安装protobuf编译器后,运行:

make init

编译测试模块所需的proto文件。然后,使用nosetests命令 执行测试用例的设置脚本:

python setup.py nosetests

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

推荐PyPI第三方库


热门话题
java连接usb到uart设备到安卓设备>3.1   可以强制Php中的web应用程序与Java中的桌面应用程序一起工作吗?   java为什么自定义系统类加载器不工作?   数组在Java中解析具有多个分隔符的字符串   PMD Java 8德米特定律   JavaSpringMVC表单验证不适用于嵌套的复杂类型   让Eclipse Java组织导入以使用Google checkstyle   java Appium:无法创建新会话   java如何在数组中声明新字段   java如何解决“无法初始化类org.apache.cassandra.config.DatabaseDescriptor”?   java AsyncTask创建socket   java向@CreatedBy添加更多信息   如何在ubuntu中运行包含大量jars依赖项的java文件   java如何使用<s:select>标记并在中休眠来填充下拉列表?   java获取错误:找不到符号变量“level”和“next_level_button”   javaweb应用中基于UI的ajax显示代码流   Java长到MySql   java JvisualVM:奇怪的应用程序行为   ubuntu将Java程序的输出结果保存到一个文件中