当用作上下文管理器时,NpzFile会关闭自己吗?

问题描述:

在文档字符串的numpy.load()我发现以下警告:当用作上下文管理器时,NpzFile会关闭自己吗?

对于.npz文件,NpzFile类返回的实例必须关闭,以避免泄露文件描述符。

我注意到,返回的NpzFile对象既有__enter__()__exit__()方法。

>>> with numpy.load('my_mile.npz') as data: 
...  A = data['A'] 

想如果我像这样使用它需要关闭它的自动照顾?

是的。使用with语句将关闭文件类对象。下面是一个例子,直接从the documentation

with load('foo.npz') as data: 
    a = data['a'] 
+0

对我感到羞耻,我错过了它。谢谢! :-) – abukaj

+1

如果我使用这个,我仍然可以在上下文之后看到'data'对象。我可以使用它的方法(如'.keys()')并获得正确的输出,但是如果我想用'data [a]'访问实际的数组,它会打印一些内部的numpy错误。 它的行为是否能够像那样访问对象? – clemisch

+0

@clemisch查看接受的答案:https://*.com/questions/6432355/variable-defined-with-with-statement-available-outside-of-with-block – abukaj