簡體   English   中英

如何在python中按編號獲取頂級protobuf枚舉值名稱?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM