gpt4 book ai didi

python protobuf无法反序列化消息

转载 作者:行者123 更新时间:2023-12-02 06:59:28 25 4
gpt4 key购买 nike

在 python 中开始使用 protobuf 我遇到一个奇怪的问题:

一个简单的消息原型(prototype)定义是:

syntax = "proto3";
package test;

message Message {
string message = 1;
string sender = 2;
}

通过 protoc -I 生成。 --python_out=generate message.proto 并在 Python 中访问,如下所示:

from generated.message_pb2 import Message

然后我可以构造一条消息

m = Message()
m.sender = 'foo'
m.message = 'bar'

print(str(m))

但是反序列化不会返回结果

s_m = m.SerializeToString()
print(s_m) # prints fine
a = m.ParseFromString(s_m)
a.foo #fails with error - no attributes deserialized

最佳答案

而不是

a = m.ParseFromString(s_m)
a.foo

这样做

a = m.FromString(s_m)
print a.sender

或者你也可以这样做

m2 = Message()
m2.ParseFromString(s_m)
print m2.sender

区别在于,FromString 返回从字符串反序列化的新对象,而 ParseFromString 解析字符串并设置对象上的字段。

关于python protobuf无法反序列化消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46675090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com