Untitled

 avatar
unknown
python
a year ago
1.0 kB
8
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