You could use struct.unpack()
:
with open(filename, 'rb') as fileobj:
for chunk in iter(lambda: fileobj.read(4), ''):
integer_value = struct.unpack('<I', chunk)[0]
This uses <I
to interpret the bytes as little-endian unsigned integers. Adjust the format as needed; >
for big-endian, i
for signed integers.
If you need to read a lot of integer values in one go and know how many you need to read, take a look at the array
module as well:
from array import array
arr = array('L')
with open(filename, 'rb') as fileobj:
arr.fromfile(fileobj, number_of_integers_to_read)
where you'd need to use array.byteswap()
if the endianess of the file and your system didn't match:
if sys.byteorder != 'little':
arr.byteswap()