Python 关闭打开的数据文件

Python 关闭打开的数据文件,python,ipython,hdf5,h5py,Python,Ipython,Hdf5,H5py,在我们的实验室中,我们通过python包h5py将数据存储在hdf5文件中 在实验开始时,我们创建一个hdf5文件,并在文件中存储一个又一个数据数组(除其他外)。当实验失败或中断时,文件未正确关闭。 因为我们的实验是从iPython运行的,所以对数据对象的引用仍然(在某个地方)在内存中 是否有办法扫描所有打开的数据对象并将其关闭 这就是如何做到的(我不知道如何在没有例外的情况下检查文件的关闭状态,也许您会发现): 另一个想法: D如何使用文件,如何使用上下文管理器和带有以下关键字的 with h

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

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


是否有办法扫描所有打开的数据对象并将其关闭

这就是如何做到的(我不知道如何在没有例外的情况下检查文件的关闭状态,也许您会发现):

另一个想法:

D如何使用文件,如何使用上下文管理器和带有以下关键字的

with h5py.File("some_path.h5") as f:
   f["data1"] = some_data
当程序流退出with块时,无论发生什么情况,文件都会关闭,包括异常等。

pytables
(使用的是
h5py
)跟踪所有打开的文件,并提供一种简单的方法强制关闭所有打开的
hdf5
文件

import tables
tables.file._open_files.close_all()

该属性
\u open\u files
还有一些有用的方法,可以为您提供打开文件的信息和处理程序。

我发现该文件。bool()在打开时返回True,否则返回False。这可能是最简单的检查方法。 换句话说,请执行以下操作:

hFile = h5py.File(path_to_file)
if hFile.__bool__():
       hFile.close()

谢谢你提供关于“另一个想法”的信息。我只是在搜索,以确保我的h5py.文件以“with”结尾,谢谢,这正是我所需要的。出于某种原因,前面的答案对我不起作用,但无论如何,这个答案要简单得多:-)这似乎是真的,但官方文件中有关于这种行为的描述吗?如果一些不相关的条件也会影响_uubool_uu()的值,这可能是有风险的,不幸的是,我没有意识到这一点!
hFile = h5py.File(path_to_file)
if hFile.__bool__():
       hFile.close()