文字列を 1 行ずつ解析し、各解析結果のジェネレーターを提供したいと考えています。これらの結果を反復処理するコードは、必要な情報が見つかった場合、シーケンス全体を反復処理しないことを選択できます。
import StringIO
def foo(string):
sstream = StringIO.StringIO(string)
for line in sstream:
res = doSomethingWith(line)
yield res
sstream.close()
for bar in foo(mystring):
if condition(bar):
break
になると、これはsstream
開いたままcondition(bar)
になると思いTrue
ます。sstream
反復が終了したときに が閉じられることを保証する最善の方法は何foo()
ですか? ジェネレーターをクラス定義でラップして実装する必要があります__del__
か? または、ここでガベージコレクションに頼ることができますか? foo()
色々な弦を呼ぶ予定です。