python - 从 Protocol Buffer 获取所有字段名称?

标签 python protocol-buffers

我想将 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/

相关文章:

go - 使用 dep 时如何正确包含协议(protocol)的 golang protobuf/ptypes?

cmake - PROTOBUF_GENERATE_CPP 不生成 src 和头文件

json - gRPC 服务器可以作为另一个 gRPC 客户端的客户端吗?

java - 在 Maven 项目之间导入 Protocol Buffer 定义

python - 如何使用 XlsxWriter 自动定义 excel 工作表名称?

python - Django 模板中带空格的字典键

java - 如何为 Java HashMaps 模拟 Python dict "items()"方法?

自动检测未知相似字符串的Python库

python - Selenium 无法在 CentOS 中启动 Chromedriver

java - 如何使用 Google protobuf 通过串行端口进行通信?