Python:h5py 给出 OSError: Can't read data (inflate() failed) 即使它之前已经打开过

oju*_*unk 4 python numpy python-3.x h5py

蟒蛇 3.5。我在一个目录中有几百个 .mat mat 文件(7.3 版)。我正在遍历所有这些以提取数据的两个不同部分。我循环遍历并获取并获取第一批没有任何问题,但是当我再次执行完全相同的操作时,仅提取了数据的不同部分,我收到以下错误:

Traceback (most recent call last):
  File "v73_test.py", line 43, in <module>
    mrfs_data = extract.convert1simProteinComCountsIntoDataFrame(path2mats)
  File "/home/oli/Downloads/PhD/wc/mg/version_73_stuff/functions_for_joshuas_matFiles/extract_matFile_data_v73.py", line 586, in convert1simProteinComCountsIntoDataFrame
    raw_data = getMatureProteinComplexs(path2mats, state_no)
  File "/home/oli/Downloads/PhD/wc/mg/version_73_stuff/functions_for_joshuas_matFiles/extract_matFile_data_v73.py", line 53, in getMatureProteinComplexs
    if len(np.array(state_file['ProteinComplex']['counts']).shape) == 3:
  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/oli/virtualenvs/standard_python3.5/lib/python3.5/site-packages/h5py/_hl/dataset.py", line 696, in __array__
    self.read_direct(arr)
  File "/home/oli/virtualenvs/standard_python3.5/lib/python3.5/site-packages/h5py/_hl/dataset.py", line 657, in read_direct
    self.id.read(mspace, fspace, dest, 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 (inflate() failed)
Run Code Online (Sandbox Code Playgroud)

所以该文件肯定存在并且可以访问,所以我唯一能想到的是数据已损坏,但如果是这种情况,我肯定无法从中提取任何数据?

oju*_*unk 7

我在这里回答了我自己的问题,因为网上关于这个错误的信息不多,我学到了一些东西,所以也许它会帮助别人。

所以我意识到数据实际上已损坏。我认为如果文件已损坏,那么您将无法从中提取任何内容,但事实证明,在这种情况下,情况并非如此,您无法访问的唯一位是已损坏的特定位。根据其他版本的 .mat 文件的经验,这不是我所期望的,但现在我想到这个版本实际上是什么,这似乎很明显。