イテレータを使用してファイルから値を読み取ることは可能ですか?その結果、ファイルはイテレーションの最後に自動的に閉じられますか?ファイルから値を読み取るイテレータ
with
ステートメントを使用してそのようなイテレータを作成することは機能していないようです。
with open('/dev/zero', 'rb') as f:
values = iter(f.read(1) for i in (1, 2, 3))
values.next() #ValueError: I/O operation on closed file
ラッパークラスを作成し、 '__iter__'と' __next__'を実装し、 'StopIteration'を呼び出すときに' f .__ exit __() 'を呼び出す必要があります。 –
あなたがやろうとしていることはお勧めできません。最後までやり直すことを忘れた場合や例外が発生した場合、ファイルハンドルをリークします。ファイルのすべての操作は 'with'の中で行うべきです! – MSeifert