我想将 proto 的所有字段名称放入一个列表中。有没有办法做到这一点?我查看了文档,似乎没有任何内容。
最佳答案
每个 proto 类都有一个 DESCRIPTOR class variable可用于检查相应 protobuf 消息的字段。
查看 Descriptor 的文档和 FieldDescriptor类以获取更多详细信息。
下面是一个简单的例子,将message
中所有字段的FieldDescriptor
放到一个列表中:
res = message.DESCRIPTOR.fields
要获得“与 .proto 文件中出现的完全一样”的字段名称:
res = [field.name for field in message.DESCRIPTOR.fields]
或(来自评论):
res = message.DESCRIPTOR.fields_by_name.keys()
要获取“包括包含范围”的字段的全名:
res = [field.full_name for field in message.DESCRIPTOR.fields]
关于python - 从 Protocol Buffer 获取所有字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24639562/