google.protobuf.text_format
#
参考:google.protobuf.text_format
包含用于以文本格式打印协议消息的例程。
简单使用示例:
# Create a proto object and serialize it to a text proto string.
message = my_proto_pb2.MyMessage(foo='bar')
text_proto = text_format.MessageToString(message)
# Parse a text proto string.
message = text_format.Parse(text_proto, my_proto_pb2.MyMessage())
google.protobuf.text_format.MessageToString()
将 protobuf 消息转换为文本格式。
from google.protobuf import text_format
text_format.MessageToString?
google.protobuf.text_format.Parse()
将协议消息的文本表示解析为消息。
text_format.Parse?
注意:由于历史原因,此函数不会清除输入消息。这与二进制 msg.ParseFrom(…)
的行为不同。如果文本中包含消息中已设置的字段,如果该字段是重复的,则追加值;否则,会引发错误。
示例:
a = MyProto()
a.repeated_field.append('test')
b = MyProto()
# Repeated fields are combined
text_format.Parse(repr(a), b)
text_format.Parse(repr(a), b) # repeated_field contains ["test", "test"]
# Non-repeated fields cannot be overwritten
a.singular_field = 1
b.singular_field = 2
text_format.Parse(repr(a), b) # ParseError
# Binary version:
b.ParseFromString(a.SerializeToString()) # repeated_field is now "test"
google.protobuf.text_format.Merge()
将协议消息的文本表示解析为消息。
text_format.Merge?
与 google.protobuf.text_format.Parse()
类似,但允许非重复字段有重复值,并使用最后一个值。这意味着文本中指定的任何非重复、顶层字段将替换消息中的字段。