Protobuf (Python):读取二进制数据文件并将数据分配给重复对象

问题描述 投票:0回答:1

我有一个如下的 protobuf 文件。

syntax = "proto3";

message Message {
   repeated bytes data = 1;
}

这是Python代码。

import test_pb2
message = test_pb2.Message()
with open("test.dat", mode='rb') as file:
   message.data.extend(file.read())

这是错误。

Traceback (most recent call last):
  File "./test.py", line 7, in <module>
    message.data.extend(file.read())
TypeError: 48 has type int, but expected one of: bytes

我也尝试“read_bytes()”,类似的错误。

python python-3.x protocol-buffers
1个回答
0
投票

尝试:

import test_pb2

message = test_pb2.Message()

with open("test.dat",mode="rb") as file:
    i = [bytes(b) for b in file.read()]
    message.data.extend(i)

print(message.data)

file.read()
返回
bytes
但你需要
Iterable[bytes]

© www.soinside.com 2019 - 2024. All rights reserved.