Untitled
unknown
python
a year ago
1.0 kB
14
Indexable
from google.protobuf import descriptor_pool
from google.protobuf import message_factory
from google.protobuf import descriptor_pb2
# 这是你的.proto文件的内容,用字符串表示
proto_file = """
syntax = "proto3";
package test;
message TestMessage {
string test_field = 1;
}
"""
# 创建一个FileDescriptorProto对象
file_descriptor_proto = descriptor_pb2.FileDescriptorProto()
# 使用文本格式的protobuf解析器来填充FileDescriptorProto
text_format.Merge(proto_file, file_descriptor_proto)
# 创建一个描述符池并将FileDescriptorProto添加到其中
descriptor_pool = descriptor_pool.DescriptorPool()
file_descriptor = descriptor_pool.BuildFile(file_descriptor_proto)
# 使用消息工厂来创建一个动态消息
message_factory = message_factory.MessageFactory()
TestMessage = message_factory.GetPrototype(file_descriptor.message_types_by_name["TestMessage"])
# 现在你可以像通常那样使用这个消息
test_message = TestMessage()
test_message.test_field = "Hello, world!"
print(test_message)
Editor is loading...
Leave a Comment