Python中的Boost序列化等价物

Python中的Boost序列化等价物,python,c++,serialization,boost,Python,C++,Serialization,Boost,我有一个项目,其中有一个现有的Cpp,它使用boost序列化来序列化xml文件。我不允许更改现有的Cp,因此我需要在python中复制boost序列化正在做的事情。python中是否有与boost序列化具有相同逻辑的库 这是boost序列化的示例输出 “22序列化::存档14 0 9本地主机8888 0 0 1” 另外,我尝试了pickle,但是pickle的输出与boost序列化不一样 这看起来不像XML。相反,它看起来可能是Boost的文本存档格式(您必须检查) 您的选择将包括: 用您编写

我有一个项目,其中有一个现有的Cpp,它使用boost序列化来序列化xml文件。我不允许更改现有的Cp,因此我需要在python中复制boost序列化正在做的事情。python中是否有与boost序列化具有相同逻辑的库

这是boost序列化的示例输出

“22序列化::存档14 0 9本地主机8888 0 0 1”


另外,我尝试了pickle,但是pickle的输出与boost序列化不一样

这看起来不像XML。相反,它看起来可能是Boost的文本存档格式(您必须检查)

您的选择将包括:

  • 用您编写的代码解析文本
  • 说服C++代码的作者使用XML(很容易用Python处理)
  • 两个都使用谷歌协议缓冲区或AVRO等。这本来是一个理想的选择,因为它既不涉及C++代码的作者,也不涉及编写任何代码的作者。当规划集成异构系统(即C++和Python)时,非常值得选择为该任务设计的技术(例如谷歌协议缓冲区),即支持异质性的一些东西。李>
在像文件序列那样,如果需要用另一种语言来读取文件/流,那么在SooAuGe序列化中,如BooSooServices一般是错误的方式,因为这意味着有两个地方需要编写和维护代码(在C++和Python中是这样的)。这会增加工作量(你们两个都必须编写代码)和风险(你们中的一个可能会犯错误)

相比之下,使用具有模式语言和代码生成器的序列化技术完全消除了所有这些工作和风险。例如,对于GPB,您将编写一个模式文件(.PROTO),并将其编译为C++代码和Python代码。他们会使用C++,你会使用Python,并且你会自动从序列化文件中指定的通用格式序列化/反序列化。p>
如果您之间正在交换的数据的内容需要更改,您可以更改模式并重新编译它。您编写的C++或Python代码都不需要更改(除了解释在原语中添加的额外消息字段)。

XML存档格式与文本格式一样具有专有性。因此,即使解析器将其作为格式良好的XML读取(希望如此),也几乎不可能有效地进行解释。考虑Boost Python或Py++ 11,我想我错过了CPP文件解析XML文件的部分,然后序列化它。你是对的,它是文本存档格式。我们需要像python中那样进行boost序列化的原因是我们需要替换一个只处理发送和接收数据的进程。让我们称它为进程A。进程A处理序列化/反序列化数据并将其传递给python类。让我们称它为进程B。然后它将作为套接字发送给进程C。ABC我们需要的是删除进程A。并使用B处理数据的序列化/反序列化BA@sehe,是的,XML仍然是专有的,但至少有Python库可以很好地解析它。有点像中途之家!这是虚假的希望。相信我。除了最普通的对象图之外,所有的对象图都可以。@sehe,是的,没问题。我使用了很多商业ASN.1工具,相信我GPB的生成C++类(比较)一点都不坏。我真的希望这些东西的创造者能使用STL。。。奇怪的是,ASN.1-->Python编译器很少(几乎没有),这是一个真正的麻烦,这就是为什么我到目前为止没有提到它。那么,我错过了CPP文件解析xml然后使用boost archive对其进行序列化的部分