I\'m trying to use Python to loop over a long binary file filled with 8-byte records.
Each record has the format [ uint16 | uint16 | uint32 ]
(which
The iter builtin, if passed a callable and a sentinel value will call the callable repeatedly until the sentinel value is returned.
So you can create a partial function with functools.partial (or use a lambda) and pass it to iter, like this:
with open('foo.bin', 'rb') as f:
chunker = functools.partial(f.read, 8)
for chunk in iter(chunker, b''): # Read 8 byte chunks until empty byte returned
# Do stuff with chunk