Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python .h5文件在写入过程中磁盘空间不足后无法读取_Python_H5py - Fatal编程技术网

Python .h5文件在写入过程中磁盘空间不足后无法读取

Python .h5文件在写入过程中磁盘空间不足后无法读取,python,h5py,Python,H5py,我正在用一个相当长的过程迭代地构建一个h5文件,但是磁盘空间用完了,我没有意识到这一点。 下面是我现在尝试读取文件内容时发生的情况: >>> import h5py >>> f = h5py.File('[...].h5','r') >>> f['imgpath'][0] Traceback (most recent call last): File "<stdin>", line 1, in <mo

我正在用一个相当长的过程迭代地构建一个h5文件,但是磁盘空间用完了,我没有意识到这一点。 下面是我现在尝试读取文件内容时发生的情况:

>>> import h5py
>>> f = h5py.File('[...].h5','r')
>>> f['imgpath'][0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
  File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
  File "/home/[...]/anaconda3/envs/[...]/lib/python3.7/site-packages/h5py/_hl/dataset.py", line 496, in __getitem__
    self.id.read(mspace, fspace, arr, mtype, dxpl=self._dxpl)
  File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
  File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
  File "h5py/h5d.pyx", line 181, in h5py.h5d.DatasetID.read
  File "h5py/_proxy.pyx", line 130, in h5py._proxy.dset_rw
  File "h5py/_proxy.pyx", line 84, in h5py._proxy.H5PY_H5Dread
OSError: Can't read data (addr overflow, addr = 97708321636, size = 2096, eoa = 12745416)
>>> list(f.keys())
['aligned', 'imgpath', 'transform', 'landmarks']

有什么办法可以从中恢复过来吗?(请注意,我的操作系统还认为该文件的大小为13M,而不是我预期的大小:~100G)

如果在创建文件时磁盘空间不足,则不会告诉文件的状态。可能它没有正确关闭并且已损坏。尝试使用命令行工具之一来查询文件。其中包括来自HDF组的
h5dump
,或来自PyTables的
ptdump
。您也可以尝试使用HDF组中的
HDFView
h5repack
打开。如果文件损坏,这些操作也将失败。
h5dump
的输出为:
h5dump错误:内部错误(文件h5dump.c:第1493行)
。我认为数据无法恢复?这是我的解释。当创建文件时磁盘空间不足时,很难正确关闭文件。如果库可以将文件保持在上一次成功刷新的状态,而不是破坏所有内容,那就更好了。如果创建文件时磁盘空间不足,则无法告知文件的状态。可能它没有正确关闭并且已损坏。尝试使用命令行工具之一来查询文件。其中包括来自HDF组的
h5dump
,或来自PyTables的
ptdump
。您也可以尝试使用HDF组中的
HDFView
h5repack
打开。如果文件损坏,这些操作也将失败。
h5dump
的输出为:
h5dump错误:内部错误(文件h5dump.c:第1493行)
。我认为数据无法恢复?这是我的解释。创建文件时,如果磁盘空间不足,则很难正确关闭文件。如果库可以将文件保持在上次成功刷新的状态,而不是破坏所有内容,那就更好了。
$ conda list h5py
# packages in environment at /home/[...]/anaconda3/envs/[...]:
#
# Name                    Version                   Build  Channel
h5py                      2.8.0            py37h989c5e5_3