Adaptar um iterador para se comportar como um objeto semelhante a um arquivo em Python

Eu tenho um gerador produzindo uma lista de seqüências de caracteres. Existe um utilitário / adaptador em Python que poderia torná-lo parecido com um arquivo?

Por exemplo,

>>> 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

Como os dados podem ser grandes e precisam ser streables (cada fragmento tem alguns kilobytes, o fluxo inteiro é de dezenas de megabytes), não quero ansiosamente avaliar todo o gerador antes de passá-lo para o adaptador de fluxo.

questionAnswers(8)

yourAnswerToTheQuestion