How to loop over a binary file in Python in chunks

后端 未结 3 772
青春惊慌失措
青春惊慌失措 2021-01-22 00:13

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

3条回答
  •  野性不改
    2021-01-22 00:45

    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
    

提交回复
热议问题