Passen Sie einen Iterator so an, dass er sich in Python wie ein dateiähnliches Objekt verhält

Ich habe einen Generator, der eine Liste von Zeichenfolgen erstellt. Gibt es ein Hilfsprogramm / einen Adapter in Python, mit dem es wie eine Datei aussehen könnte?

Zum Beispiel,

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

Da Daten möglicherweise groß sind und gestreamt werden müssen (jedes Fragment einige Kilobyte, der gesamte Stream zehn Megabyte), möchte ich den gesamten Generator nicht eifrig auswerten, bevor er an den Streamadapter übergeben wird.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage