Python 无法打开 .h5 文件

Posted

技术标签:

【中文标题】Python 无法打开 .h5 文件【英文标题】:Python unable to open a .h5 file 【发布时间】:2017-05-19 09:10:41 【问题描述】:

我正在尝试打开一个 HDF5 文件以便用 python 读取它,以便以后可以用它做更多的事情。运行程序读取文件时出错。程序如下:

import h5py    # HDF5 support
import numpy

fileName = "C:/.../file.h5"
f = h5py.File(fileName,  "r")
for item in f.attrs.keys():
    print item + ":", f.attrs[item]
mr = f['/entry/mr_scan/mr']
i00 = f['/entry/mr_scan/I00']
print "%s\t%s\t%s" % ("#", "mr", "I00")
for i in range(len(mr)):
    print "%d\t%g\t%d" % (i, mr[i], i00[i])
f.close()

如果我运行程序,我最终会看到这个错误:

Traceback (most recent call last):
 File "TestHD5.py", line 8, in <module>
    mr = f['/entry/mr_scan/mr']
 File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2587)
 File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2546)
 File "C:\programs\Python27\lib\site-packages\h5py\_hl\group.py", line 166, in __getitem__
    oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
 File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2587)
 File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2546)
 File "h5py\h5o.pyx", line 190, in h5py.h5o.open (C:\aroot\work\h5py\h5o.c:3417)
KeyError: 'Unable to open object (Component not found)'

我只是缺少一些模块来读取文件,还是这是别的什么。如果我使用 h5 文件查看程序,它将打开 .h5 文件。谢谢

【问题讨论】:

请不要发布您的代码或输出的图像。直接粘贴代码和输出,这样使用起来更容易。 对不起,我希望这能让它变得更好@RushyPanchal 对不起,我希望这会让它变得更好@RadLexus 尝试在你的文件名前加上和rr"C:\User. 避免像瘟疫这样的路径中的反斜杠。 Python 很乐意为您在 Windows 上将正斜杠 (/) 转换为反斜杠。 【参考方案1】:

你的字符串:

path = "C:\Users\312001\m2020\data\20170104_145626\doPoint_20170104_150016\dataset_XMIT    data_20170104_150020.h5"

充满了损坏/非法的escapes(幸好它们会变成SyntaxErrors,尽管您使用的是Python 2),还有一些实际上确实可以工作,所以Python认为path是真的等于:'C:\\Users\xca001\\m2020\\data\x8170104_145626\\doPoint_20170104_150016\\dataset_XMIT data_20170104_150020.h5'(注意那些\x##)。

您的选择:

    使用raw string,在字符串文字前加上r 不要在路径中使用反斜杠。 Python 会将 Windows 路径的正斜杠转换为反斜杠。 双反斜杠。

【讨论】:

感谢您摆脱了 UnicodeDecodeError 和终端显示的其他一些行。生病编辑它,以便您可以看到它现在显示的内容。我仍然无法打开文件。【参考方案2】:

@NickT 发布的答案解决了我原来的问题。新版本出现的问题是由于hd5文件中的hd5文件夹名称与代码提供的文件夹名称不匹配。

【讨论】:

以上是关于Python 无法打开 .h5 文件的主要内容,如果未能解决你的问题,请参考以下文章

H5 video标签手机打开无法播放

Mac 无法打开从 Linux Ubuntu 创建的 h5 keras 模型

微信小程序内嵌webview,部分安卓机型无法打开h5界面

微信内分享第三方H5链接无法使用内置浏览器打开的解决方案

微信内无法自动跳转外部浏览器打开H5分享链接的解决办法

苹果手机微信浏览器H5播放器无法打开即播放音乐解决方案