我正在访问提供1)protobuf架构和2)给定protobuf消息的二进制数据的Web服务。 protobuf模式以ZIP格式检索,并包含一个.proto文件,其大致定义为:
message FooMessage {
//stuff
...
}
//other .proto fun...
一旦我获取了.proto文件,我就编译它:
protoc --python_out=. path/to/message
然后我导入模块:
module = importlib.import_module(libName, package=pkg)
下一步是去获取给定对象的二进制数据。我这样做并将其存储为data = io.BytesIO
对象。
所以现在我想用我在.proto文件中定义的获取的二进制数据来扩充FooMessage对象,ala:
obj = module.FooMessage(data)
问题:
FooMessage
中检索module
班级名称
我已经导入了以便我可以动态构建对象吗?FooMessage_pb2.py
对象的明显方法。似乎没有一种方法可以接受二进制数据来实例化对象ala:obj = module.FooMessage(data)
显然,我是以错误的方式做/思考这个问题。我非常感谢你的帮助。
答案 0 :(得分:0)
对于#1,它们在模式中包含类名。我错过了它。
嗯,对于#2,我只需要使用文档中没有立即明显的module.FooMessage.FromString(data)
方法。