我做了一些研究,然后使用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选项?我在任何地方都找不到有关此信息。
编辑:删除了文件(抱歉)
答案 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