[英]How to get top-level protobuf enum value name by number in python?
例如,我有原始文件File.proto
:
enum Test {
ONE = 1;
TWO = 2;
}
我使用File_pb2.py
生成文件File.proto
。 我想在一個python代碼中獲取字符串“ONE”(對應於File_pb2.ONE的名稱),其值為1(對應於File_pb2.ONE的值),來自生成的文件File_pb2.py
而不定義我自己的字典。 我怎樣才能做到這一點?
假設生成的python位於File_pb2.py代碼中試試這個:
file_pb2._TEST.values_by_number[1].name
在你的情況下,這應該給'ONE'
相反的是:
file_pb2._TEST.values_by_name['ONE'].number
會給1
。
編輯:正如@dyoo在評論中正確指出的那樣,后來在protobuf庫中引入了一種新方法:
file_pb2.Test.Name(1)
file_pb2.Test.Value('One')
編輯:這在proto3中再次發生了變化。 現在,Name()和Value()方法屬於EnumTypeWrapper類,因此可以訪問它們,如:
file_pb2.Name(1)
file_pb2.Value('One')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.