我有可以将文件作为参数的类,例如:
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。
有没有办法确保文件被关闭,而不是为我创建的每个文件明确要求它?我还想补充一点,这些类是外部的,我不想深入研究它们以找出它们与文件的确切内容。