h5py清除文件一致性标记

时间:2018-11-29 13:27:18

标签: python h5py

我做了一些研究,然后使用h5py模块将结果存储在HDF5文件中。我使用h5py模块和HDF5组的HDF查看工具多次打开和读取数据。一切正常,直到有一天我的计算机在HDF视图中打开文件时崩溃了。

重启电脑后,我无法再打开文件。 HDF查看工具显示一般错误:“打开文件时出错”

我用h5py编写了文件,所以我决定尝试用它来读取数据。该文件以libver ='latest'的swmr模式编写。我尝试了以下方法:

with h5py.File(fpath, 'r', swmr=True, libver='latest') as f:
    pass

返回错误“ OSError:无法打开文件(尚未为SWMR写入打开文件)”

with h5py.File(fpath, 'r') as f:
    pass

返回错误“ OSError:无法打开文件(文件已经打开可写(可以使用h5clear文件清除文件一致性标志))”

现在我想知道,是否在h5py模块中实现了h5clear选项?我在任何地方都找不到有关此信息。

编辑:删除了文件(抱歉)

1 个答案:

答案 0 :(得分:0)

给出一个引发此错误的hdf5文件Unable to open file (file is already open for write/SWMR write),如果您没有办法重新创建该文件,则可以使用命令行工具h5clear清除文件一致性标志。

$> h5clear -s my_bad.h5

(在Windows 10或任何其他操作系统上)获得h5clear实用程序的一种方法是使用Anaconda Python发行版安装h5py(或熊猫,不确定是哪个负责)。在我的系统上,可执行文件位于环境bin目录:anaconda3/envs/my_env/Library/bin/h5clear中。我希望您也可以通过从pip安装h5py来获得此实用程序,尽管我尚未对此进行测试。

如果已安装Anaconda,则可以create an environment,安装软件包,然后在命令行中使用以下命令运行h5clear。在Windows上,我使用git-bash,但是如果正确设置路径,这也可以在Anaconda提示符下,甚至在Windows命令提示符下也可以使用。

$> conda create --name demo

$> source activate demo

(demo) 
$> conda install h5py pandas

(demo)
$> h5clear -s my_bad.h5