【发布时间】:2017-10-02 14:09:00
【问题描述】:
问题
我在 python 2.7 中使用 h5py 创建了一个文件。
这些步骤会导致损坏:
我使用
scp从合作者那里下载了它的新副本。它是完整的,286MB。我用
hdfview打开它来检查它是否可读。这会正确显示所有数据集和组。我退出 hdfview。
重复步骤 2 和 3 以确保
hdfview不会损坏文件。-
我打开 ipython 3.6 并且,
import h5py f = h5py.File(filename,'r') g = f['/sol000']#one group that should be there
我收到KeyError: "Unable to open object (Object 'sol000' doesn't exist)"
- 我
f.close()并退出 ipython。我再次用hdfview打开它,整个结构都消失了。该文件现在为 4KB。
我可以在 python 2 hdf5 中打开文件并访问所有数据集,但我的代码必须使用 python 3。
系统
在 Fedora 24 64 位、python 2.7、hdf5 2.7.0 上创建的文件
系统试图在 Fedora 25 64 位 python 3.6、h5py 2.7.0 上读取它
最少的代码显示应该可以工作
在系统 1 上:
import h5py
import numpy as np
f = h5py.File("file.hdf5","w")
f.create_dataset("/sol000/data",(100,100),dtype=float)
f["/sol000/data"] = np.zeros([100,100],dtype=float)
f.close()
在系统 2 上:执行步骤 1-4。
import h5py
f = h5py.File("file.hdf5","r")
f.visit(lambda *x:print(x))
#(sol000/data,)
f.close()
【问题讨论】:
-
您是否尝试过用一个(从头开始)创建一个简单的 hdf5 文件并用另一个打开?沿着minimal reproducible example 的路线。里面可以有unicode字符串吗?
-
我有来自合作者的第二个 hdf5 文件,它工作正常。但是,我问他是否使用了不同的 python/h5py 组合来创建它。如果使用相同的版本,则它满足最低可验证标准。
-
如果它不能从您的问题中复制粘贴,则它不是 MCVE。
-
我已经添加了这个。
-
您的编辑表明此示例有效。我们期望它能够工作。你需要一个可重复的例子,打破;那是 MCVE 中的 C。
标签: python python-2.7 python-3.x corruption h5py