You need to know what kind of information is stored in each field for the struct module to make sense of each field.
For example, the first field at offset 0 is 4 bytes long, which means it could be an int (ranges from −2,147,483,648 to +2,147,483,647) or it could be a unsigned int instead (ranges from 0 to 4,294,967,295). It could also be a single-precision floating point number.
You probably also need to figure out the endianness of your file format. If this is not explicitly named you need to experiment a little, or infer from context what it would be (a Windows file format is almost always little-endian, for example).
If you want to unpack the first 4 values only, you read the correct number of bytes (8 in your format) and pass this to the struct.unpack function together with a set of formatting characters to tell struct what types to expect. If we assume little-endian data, and the first four fields represent an unsigned int, an unsigned short and two unsigned chars, respectively, you'd use:
with open('something.cdr', 'rb') as data:
x, x1, x2, x3 = struct.unpack('<IH2B', data.read(8))