6

I want to read as many 24 bit chunks as possible from a file. How can I do this using bitstrings' ConstBitStream when I don't now how many chunks there are?

Currently I do this:

eventList = ConstBitStream(filename = 'events.dat')
for i in range(1000) :
    packet = eventList.read(24)

(here I have to calculate the number of events beforehand)

HWende
  • 1,705
  • 4
  • 18
  • 30

2 Answers2

5

You could read until an ReadError exeption is generated

try:
    while True:
        packet = eventList.read(24)
except ReadError:
    pass
waynix
  • 501
  • 3
  • 13
3

Catching the ReadError is a perfectly good answer, but another way is to instead use the cut method, which returns a generator for bitstrings of a given length, so just

for packet in eventList.cut(24):

should work.

Scott Griffiths
  • 21,438
  • 8
  • 55
  • 85