def make_complex(): complex_msg = complex_pb2.ComplexMessage() # Assignment not allowed to composite field # one_dummy = complex_pb2.DummyMessage() # one_dummy.id = 1 # one_dummy.name = "python" # complex_msg.one_dummy = one_dummy complex_msg.one_dummy.id = 123 complex_msg.one_dummy.name = "I am dummy message" print(complex_msg) first = complex_msg.multiple_dummy.add() first.id = 23 first.name = "this is first dummy" print(complex_msg) complex_msg.multiple_dummy.add(id=24, name="this is second dummy.") print(complex_msg) third_dummy = complex_pb2.DummyMessage() third_dummy.id = 1000 third_dummy.name = "this is third element." complex_msg.multiple_dummy.extend([third_dummy]) print(complex_msg) third_dummy.id = 100 third_dummy.name = "I am changed now." print(third_dummy) with open('complex.bin', "wb") as f: print("write as binary.") bytes_string = complex_msg.SerializeToString() f.write(bytes_string) with open("complex.bin", "rb") as f: print("reading binary file.") simple_msg_read = complex_pb2.ComplexMessage().FromString(f.read()) print(simple_msg_read)
import complex_pb2 PB_FILE_PATH = 'complex.pb' JSON_FILE_PATH = 'complex.json' message = complex_pb2.ComplexMessage() message.one_dummy.id = 12 message.one_dummy.name = 'dummy1' multiple_dummy = complex_pb2.DummyMessage() multiple_dummy.id = 1 multiple_dummy.name = 'dummy1' message.multiple_dummy.append(multiple_dummy) multiple_dummy.id = 2 multiple_dummy.name = 'dummy2' message.multiple_dummy.append(multiple_dummy) multiple_dummy.id = 3 multiple_dummy.name = 'dummy3' message.multiple_dummy.append(multiple_dummy) multiple_dummy.id = 4 multiple_dummy.name = 'dummy4' message.multiple_dummy.append(multiple_dummy) # 以二进制形式保存 f = open(PB_FILE_PATH, "wb") f.write(message.SerializeToString()) f.close() # 读message message = complex_pb2.ComplexMessage() f = open(PB_FILE_PATH, "rb")
import complex_pb2 as complex_pb2 complex_message = complex_pb2.ComplexMessage() complex_message.one_dummy.id = 123 complex_message.one_dummy.name = "I am a dummy message" first_multiple_dummy = complex_message.multiple_dummy.add() first_multiple_dummy.id = 345 first_multiple_dummy.name = "I'm the first element on an array" complex_message.multiple_dummy.add(id=567, name="Second element") third_dummy_message = complex_pb2.DummyMessage() third_dummy_message.id = 999 third_dummy_message.name = "I'm the last one" complex_message.multiple_dummy.extend([third_dummy_message]) # The result will not change third_dummy_message.id = 111 print(third_dummy_message) print(complex_message)