编程语言
首页 > 编程语言> > python – 关闭一个打开的h5py数据文件

python – 关闭一个打开的h5py数据文件

作者:互联网

在我们的实验室中,我们通过python包h5py将数据存储在hdf5文件中.

在实验开始时,我们创建一个hdf5文件,并在文件中的数据数组之后存储数组(以及其他内容).当实验失败或被中断时,文件未正确关闭.
因为我们的实验是从iPython运行的,所以对数据对象的引用仍然(在某处)存储在内存中.

有没有办法扫描所有打开的h5py数据对象并关闭它们?

解决方法:

这是如何做到的(我无法弄清楚如何在没有例外的情况下检查文件的封闭性,也许你会发现):

import gc
for obj in gc.get_objects():   # Browse through ALL objects
    if isinstance(obj, h5py.File):   # Just HDF5 files
        try:
            obj.close()
        except:
            pass # Was already closed

另一个想法:

在讨论如何使用文件时,使用上下文管理器和with关键字如何?

with h5py.File("some_path.h5") as f:
   f["data1"] = some_data

当程序流退出with-block时,无论发生什么情况,文件都会关闭,包括异常等.

标签:python,hdf5,ipython,h5py
来源: https://codeday.me/bug/20191005/1857649.html