aby*_*s.7 35 python protocol-buffers
例如,我有原始文件File.proto:
enum Test {
ONE = 1;
TWO = 2;
}
Run Code Online (Sandbox Code Playgroud)
我File_pb2.py使用protoc 生成文件File.proto.我想在一个python代码中获取字符串"ONE"(对应于File_pb2.ONE的名称)的值为1(对应于File_pb2.ONE的值)来自生成的文件File_pb2.py而不定义我自己的字典.我怎样才能做到这一点?
Tis*_*sho 53
假设生成的python位于File_pb2.py代码中试试这个:
file_pb2._TEST.values_by_number[1].name
Run Code Online (Sandbox Code Playgroud)
在你的情况下,这应该给 'ONE'
相反的是:
file_pb2._TEST.values_by_name['ONE'].number
Run Code Online (Sandbox Code Playgroud)
会给1.
编辑:正如@dyoo在评论中正确指出的那样,后来在protobuf库中引入了一种新方法:
file_pb2.Test.Name(1)
file_pb2.Test.Value('One')
Run Code Online (Sandbox Code Playgroud)
编辑:这在proto3中再次发生了变化.现在,Name()和Value()方法属于EnumTypeWrapper类,因此可以访问它们,如:
file_pb2.Name(1)
file_pb2.Value('One')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31040 次 |
| 最近记录: |