Dostosuj iterator, aby zachowywał się jak obiekt podobny do pliku w Pythonie

Mam generator generujący listę ciągów. Czy w Pythonie istnieje narzędzie / adapter, które może sprawić, że będzie wyglądać jak plik?

Na przykład,

>>> def str_fn():
...     for c in 'a', 'b', 'c':
...         yield c * 3
... 
>>> for s in str_fn():
...     print s
... 
aaa
bbb
ccc
>>> stream = some_magic_adaptor(str_fn())
>>> while True:
...    data = stream.read(4)
...    if not data:
...        break
...    print data
aaab
bbcc
c

Ponieważ dane mogą być duże i muszą być przesyłane strumieniowo (każdy fragment ma kilka kilobajtów, cały strumień ma dziesiątki megabajtów), nie chcę chętnie oceniać całego generatora przed przekazaniem go do adaptera strumienia.

questionAnswers(8)

yourAnswerToTheQuestion