def read(self, f): f.seek(self.offset, 0) assert f.read(4) == self.tag assert read32(f) == self.size sio = StringIO(f.read(self.size)) sio.tag = self.tag sio.rid = self.rid sio.size = self.size return sio
def read(self, f): if self.tag == "CFTC": return None f.seek(self.offset, 0) assert f.read(4).upper() == self.tag assert read32(f, True) == self.size assert read32(f, True) == self.rid name = None self.size = self.size - 4 name = readString(f) if len(name): print self.rid, self.tag, name self.size = self.size - len(name) - 1 if ((f.tell() - self.offset) & 1) != 0: f.read(1) # padding self.size = self.size - 1 sio = StringIO(f.read(self.size)) sio.tag = self.tag sio.rid = self.rid sio.name = name sio.size = self.size return sio