Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用protobuf在python中设置字段值之一_Python_Proto - Fatal编程技术网

如何使用protobuf在python中设置字段值之一

如何使用protobuf在python中设置字段值之一,python,proto,Python,Proto,我和菲尔德的一个人有个协议。“Oneof”是采用其中一个字段值还是全部字段值?不确定是否有办法设置此选项 当我运行“pb2.HasField('signal') 原始文件: message Log { string id = 1; Severity severity = 2; string Uid = 3; oneof signal{ GPS gps_log = 1; Ignition ignition_log = 2; } enu

我和菲尔德的一个人有个协议。“Oneof”是采用其中一个字段值还是全部字段值?不确定是否有办法设置此选项

当我运行
“pb2.HasField('signal')

原始文件:

message Log {
  string id = 1;       
  Severity severity = 2; 
  string Uid = 3;        
oneof signal{
    GPS gps_log = 1;
    Ignition ignition_log = 2;
  }
enum Severity {
    info = 0;
    critical = 1
}
message GPS{
  EventType event_type = 1;
enum EventType {
    ON = 0;
    OFF = 1;
  }
}

message Ignition{
  EventType event_type = 1;
enum EventType {
    ON = 0;
    OFF = 1;
  }
}
那么,在python中导入pb2之后,如何设置“signal”的值呢。 当我尝试时:

message=pb2.Log()
res = message.DESCRIPTOR.fields
res = [field.name for field in message.DESCRIPTOR.fields]
The o/p is ['id','severity','Uid','gps_log','ignition']  - All the fields.
如何强制“Oneof”字段仅显示其中一条消息,例如GPS。 另外
pb2.WhichOneof('signal')
不返回任何内容(空)。
我甚至不确定这是否可能。

看起来我缺少了主protobuf文件,这是我想要的信息。字段值在prot_主文件中指定。

看起来我缺少了主protobuf文件,这是我想要的信息。字段值在prot_主文件中指定。

仍然我不知道如何设置“信号”的值?你能举个例子吗?我还是不知道如何设置“信号”的值?你能举个例子吗。?