Python 无法打开 .h5 文件
Python unable to open a .h5 file
我正在尝试打开一个 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 文件。谢谢
你的字符串:
path = "C:\Users2001\m2020\data170104_145626\doPoint_20170104_150016\dataset_XMIT data_20170104_150020.h5"
充满了broken/illegal escapes(谢天谢地它们会变成语法错误,尽管你使用的是Python 2),还有一些实际上做 有效,所以 Python 认为 path
实际上等于: 'C:\Users\xca001\m2020\data\x8170104_145626\doPoint_20170104_150016\dataset_XMIT data_20170104_150020.h5'
(注意那些 \x##
)。
您的选择:
- 通过在字符串文字前加上
r
来使用 raw string
- 不要对路径使用反斜杠。 Python 会将 Windows 路径的正斜杠转换为反斜杠。
- 双反斜杠。
@NickT 发布的答案解决了我原来遇到的问题。新版本中显示的问题是由于 hd5 文件中的 hd5 文件夹名称与代码提供的文件夹名称不匹配。
我正在尝试打开一个 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 文件。谢谢
你的字符串:
path = "C:\Users2001\m2020\data170104_145626\doPoint_20170104_150016\dataset_XMIT data_20170104_150020.h5"
充满了broken/illegal escapes(谢天谢地它们会变成语法错误,尽管你使用的是Python 2),还有一些实际上做 有效,所以 Python 认为 path
实际上等于: 'C:\Users\xca001\m2020\data\x8170104_145626\doPoint_20170104_150016\dataset_XMIT data_20170104_150020.h5'
(注意那些 \x##
)。
您的选择:
- 通过在字符串文字前加上
r
来使用 raw string
- 不要对路径使用反斜杠。 Python 会将 Windows 路径的正斜杠转换为反斜杠。
- 双反斜杠。
@NickT 发布的答案解决了我原来遇到的问题。新版本中显示的问题是由于 hd5 文件中的 hd5 文件夹名称与代码提供的文件夹名称不匹配。