如果您有一个与module_name_pb2.py
文件相对应的module对象,或者对.proto文件本身的访问,有没有一种方法可以很好地打印规范本身?JSON?我想显示字段和类型。在
我不想打印一个实例,例如Print human friendly Protobuf message
给定一些protobuf消息格式(在.proto文件中定义),例如:
message XYData {
float x = 1;
float y = 2;
}
我要找的东西是:
^{pr2}$如果能够列出.proto文件中定义的所有消息,那就更好了。在
编辑:也许是这样的,但是在Python中:https://github.com/devongovett/protobuf-jsonschema
请参阅Python模块和示例protobuf定义here
给出了protobuf定义的示例:
产生以下内容:
^{pr2}$module_msgs
函数以protobuf模块为输入,返回一个dict
,其中消息名作为键,并生成namedtuple
对象作为值。这是要使用的“顶层”功能。在我使用}可能更合适。在
nametuple
类型来表示protobuf消息。您可以通过_fields
属性迭代它们的字段。事后看来,typing.NamedTuple
或{我创建了两个特殊的}。您可以确定字段是映射还是重复使用
namedtuple
s:Map
和{isinstance
检查。在类型字符串对应于protobuf字段类型。因此,protobuf消息}对象,要么是另一个
namedtuple
的字段值要么是字符串(对应于protobuf类型)、Repeated
或{namedtuple
对象。在这还没有用其他protobuf特性进行测试,比如默认值、Any、one-of等
更多用法和测试请参见要点中的
__main__
。在相关问题 更多 >
编程相关推荐