2012-06-05 10 views
5

Quiero leer tantos fragmentos de 24 bits como sea posible desde un archivo. ¿Cómo puedo hacer esto usando bitstrings 'ConstBitStream cuando ahora no sé cuántos trozos hay?Cómo leer el archivo completo con bitstring

Actualmente Puedo hacer esto:

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

(aquí tengo que calcular el número de eventos de antemano)

Respuesta

4

Se podía leer hasta que se genera una excepcion ReadError

try: 
    while True: 
     packet = eventList.read(24) 
except ReadError: 
    pass 
+0

'ReadError' es una excepción' bitstring'. Tiene que ser importado de 'bitstring' o usado como' bitstring.ReadError'. – TheMeaningfulEngineer

3

La captura de la ReadError es una respuesta perfectamente buena, pero otra forma es utilizar el método cut, que devuelve un generador para bitstrings de una longitud determinada, tan solo

for packet in eventList.cut(24): 

debería funcionar.

+0

Solución muy conveniente, gracias! – HWende

Cuestiones relacionadas