我是HDF5的新手,我正在试图弄清楚如何打开和覆盖在python 2.7中使用h5py版本2.1.3的用户块的HDF5文件。
假设我按以下方式创建文件:
import numpy as np
import h5py
def newfile(filename):
'''This is a test function for creating an HDF5 file.'''
# create dummy data for now
data = np.zeros(100)
# create the file and stick data in a dataset in the root group
with h5py.File(filename, mode="w", userblock_size=512) as f:
f['dataset'] = data
# populate the user block with something after file has been closed
with open(filename, "rb+") as f:
f.write('This is a test of the user block, just a place to put ' +
'random data')
当此文件不存在时,此函数会按预期使用数据创建新文件,并填充用户块。但是,如果我在创建文件后尝试运行相同的函数(即运行它两次而不删除文件),我会收到:
IOError: unable to create file (File accessibilty: Unable to open file)
这让我很惊讶。我预计这个文件会被覆盖,因为我最初用mode =“w”打开文件,它应该覆盖。
但是,如果我从原始文件创建中删除用户块创建,则文件会按预期成功覆盖。我在创建用户块数据时做错了什么,或者我偶然发现了HDF5和用户块问题,我没有正确处理?
答案 0 :(得分:0)
这似乎是旧版本的hdf5(版本1.8.11)和h5py(版本2.1.3)交互方式的错误。解决方案是升级到HDF5 1.8.15和h5py 2.5.0的当前版本。这有效地解决了python 2.7.5中的问题。