按照国外的文档分析出来的亲测有效
def read_grib2(filepath = filepath):
ff = open(filepath, 'rb')
# 0指示段 16B
seg0_grib = struct.unpack("4s",ff.read(4))[0]
seg0_free = struct.unpack("2s",ff.read(2))
seg0_gribtablenum = struct.unpack("b",ff.read(1))[0]
seg0_gribnum = struct.unpack("b",ff.read(1))[0]
seg0_griblen = int.from_bytes(struct.unpack("8s",ff.read(8))[0],byteorder='big',signed=False)
# 1产品标识段
seg1_seglen = int.from_bytes(struct.unpack("4s",ff.read(4))[0],byteorder='big',signed=False)
seg1_segnum = struct.unpack("b",ff.read(1))[0]
seg1_product_tip = struct.unpack("2B",ff.read(2))
seg1_product_child_tip = struct.unpack("2B",ff.read(2))
seg1_maintable_num = struct.unpack("B",ff.read(1))[0]
seg1_local_num = struct.unpack("B",ff.read(1))[0]
seg1_mean_time = struct.unpack("B",ff.read(1