36 lines
1.0 KiB
Python
Executable File
36 lines
1.0 KiB
Python
Executable File
from google.protobuf import json_format
|
|
import os
|
|
import json
|
|
import sys
|
|
|
|
from absl import logging
|
|
|
|
|
|
class Reader:
|
|
def __init__(self, data_file_path):
|
|
with open(data_file_path) as reader:
|
|
data_file_conf = json.load(reader)
|
|
|
|
data_file_base_path = os.path.dirname(data_file_path)
|
|
|
|
index_file_path = os.path.join(data_file_base_path, data_file_conf["index"][0])
|
|
binary_file_path = os.path.join(data_file_base_path, data_file_conf["data"][0])
|
|
|
|
with open(index_file_path, "r") as object_index_file:
|
|
self.object_index = json.load(object_index_file)
|
|
|
|
self.binary_file_path = binary_file_path
|
|
|
|
def each(self):
|
|
with open(self.binary_file_path, "rb") as object_pb_file:
|
|
for obj_idx in self.object_index["index"]:
|
|
offset = obj_idx[1]
|
|
size = obj_idx[2]
|
|
|
|
object_pb_file.seek(offset)
|
|
bts = object_pb_file.read(size)
|
|
|
|
logging.debug("data size %d", size)
|
|
|
|
yield bts
|