私はBufferedReaderを継承するクラスとファイルストリームのリストを持っています b.close()は最後のストリームを除くすべてのものに対して呼び出されます。 どうすればいいですか?実装BufferedIOBase
クラスでIOBase
オブジェクトをラップファイルのリストのためにBufferedReaderがファイルを閉じるのを防ぐ
class TestReader(BufferedReader): pass def test(streams): for stream in streams: b=TestReader(stream) do_something(b) #all the streams except streams[-1] are closed, how do I prevent this? streams=[open('test1.txt','rb'),open('test2.txt','rb')] test(streams) streams.do_something_else()
は実際に、あなたのコメントが表示された時点で、ストリームがまだ開いています。 –
いいえ、ストリームしてみてください。[0] .read() – simonzack
まあ、そうです、テストスクリプトにバグがありました。 –