<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def load(self, filename, bs=512):
 """Loads GPT partition table. Args: filename (str):
 path to file or device to open for reading bs (uint):
 Block size of the volume, default: 512 Raises: IOError: If file does not exist or not readable """

        with open(filename, 'rb') as f:
            f.seek(GPT_HEADER_OFFSET + 0x0C)
            header_size = struct.unpack("<I", f.read(4))[0]
            f.seek(GPT_HEADER_OFFSET)

            header_data = f.read(header_size)
            self.header = GPT_HEADER(header_data)

            if (self.header.signature != GPT_SIGNATURE):
                raise Exception("Invalid GPT signature")

            self.__load_partition_entries(f, bs)