Ich versuche, eine Binärdatei ein Stück nach dem anderen zu lesen. Jedes Mal, wenn der Generator 1024 Bytes an Daten erzeugen würde. Wenn ich aufhören will, rufe ich den Generator mit .send ('Stop') an. Ich bekomme die Ausgabe korrekt, aber ich bekomme eine Ausnahme. Mache ich etwas falsch oder wird das erwartet? Wie gehe ich damit um?StopIteration Fehler nach dem Ausbrechen eines Generators
def read_epoch_from_file(filename,size=1024):
with open(filename, "rb") as f:
while True:
read_data = f.read(size)
if read_data:
y = yield read_data
if y == 'Stop':
print 'Stopped'
break
else:
break
print 'End'
f.close()
return
gen = read_epoch_from_file("Test")
readdata_ascii = next(gen)
#do somthing
readdata_ascii = next(gen)
#do somthing
readdata_ascii = next(gen)
#do somthing
gen.send('Stop')
Ausgang
gesehenStopped
End
Traceback (most recent call last):
File "C:\CVS sandbox\Mandela2\Extractor\binary_parser.py", line 50, in <module>
gen.send('Stop')
StopIteration