title: How to loop over a binary file in Python in chunks
body: <p>I'm trying to use Python to loop over a long binary file filled with 8-byte records.</p>
  
  <p>Each record has the format <code>[ uint16 | uint16 | uint32 ]</code><br>
  <em>(which is <code>"HHI"</code> in struct-formatting)</em></p>
  
  <p>Apparently each 8-byte block is getting treated as an <code>int</code>, instead of an array of 8-bytes, then causing the <code>struct.unpack</code> call to fail</p>
  
  <pre><code>with open(fname, "rb") as f:
      sz=struct.calcsize("HHI")
      print(sz)                # This shows 8, as expected 
      for raw in f.read(sz):   # Expect this should read 8 bytes into raw
          print(type(raw))     # This says raw is an 'int', not a byte-array
          record=struct.unpack("HHI", raw ) # "TypeError: a bytes-like object is required, not 'int'"
          print(record)
  </code></pre>
  
  <p>How can I read my file as a series of structures, and print them each out?</p>