ファイルを引数として取ることができるクラスがあります。次に例を示します。
ParserClass(file('/some/file', 'rb'))
Python を正しく理解していれば、オブジェクトがガベージ コレクションされると、ファイルは自動的に閉じられます。私が理解していないのは、それがいつ起こるかです。次のような関数で:
def parse_stuff(filename):
parser = ParserClasss(file(filename, 'rb'))
return list(parser.info())
parser
関数が終了した直後にそのオブジェクトを GC して、ファイルを閉じてはいけませんか? しかし、何らかの理由で、Python は関数が終了した後もずっとファイルを開いているように見えます。または、少なくとも Windows ではファイルを変更できないため、Python がファイルを開いていると主張し、IDLE を閉じるように強制するため、そのように見えます。
作成するすべてのファイルに対して明示的に要求する以外に、ファイルを確実に閉じる方法はありますか? また、これらのクラスは外部であることも付け加えたいと思います。それらを掘り下げて、ファイルの内容を正確に調べたくありません。