2017-08-24 15 views
0

En docstring de numpy.load() J'ai trouvé l'avertissement suivant:NpzFile se ferme-t-il lorsqu'il est utilisé comme gestionnaire de contexte?

Pour .npz fichiers, l'instance de retour de classe NpzFile doit être fermé pour éviter les descripteurs de fichiers qui fuient.

je remarqué, que l'objet NpzFile retourné a deux __enter__() et __exit__() méthodes.

Ne serait-il prendre soin de fermer automatiquement si je l'utilise comme ceci:

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

?

Répondre

1

Oui. L'utilisation d'une instruction with ferme l'objet semblable à un fichier. Voici un exemple, directement à partir the documentation:

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

Honte à moi, je l'ai manqué. Merci! :-) – abukaj

+1

Si j'utilise ceci, je vois toujours l'objet 'data' après le contexte. Je peux utiliser ses méthodes (comme '.keys()') et obtenir la sortie correcte, mais si je veux accéder au tableau réel avec 'data [a]', il imprime une erreur interne numpy. Est-ce que le comportement voulu est de pouvoir accéder à l'objet comme ça? – clemisch

+0

@clemisch Voir la réponse acceptée à: https://stackoverflow.com/questions/6432355/variable-defined-with-with-statement-available-outside-of-with-block – abukaj