H5py:在写入模式下重新打开文件会删除以前的数据

时间:2015-06-26 13:50:17

标签: python file hdf5 h5py

import h5py
import numpy as np

f = h5py.File('test','w')
f.create_dataset('key1', data = np.array([1,2,3]))
f.create_dataset('key2', data = np.array([4,5,6]))
f.close()

创建名为test的文件,并分别在key1和key2下写入两个数组。

但是,关闭文件对象并重新打开文件会删除先前存储的数据。

f = h5py.File('test','w')
f.create_dataset('key1', data = np.array([1,2,3]))
f.close()
f = h5py.File('test','w')
f.create_dataset('key2', data = np.array([4,5,6]))
f.close()

在这种情况下,只有[4,5,6]存储在密钥key2下。

如何在不删除已存储的旧数据的情况下重新打开文件并写入新数据?

1 个答案:

答案 0 :(得分:4)

快速回答

h5py.File('test','w')更改为h5py.File('test','a')(或h5py.File('test'),默认为后者。

为什么

实例化h5py.File对象时,必须指定mode作为第二个参数。这必须是以下之一:

  • r只读,文件必须存在
  • r+读/写,文件必须存在
  • w创建文件,截断(如果存在)
  • w-x创建文件,如果存在则失败
  • a读/写(如果存在),否则创建(默认)

使用a是一种快速解决方法,但如果您的程序并不总是知道该文件是否已存在,则存在风险。通过使用其他模式以及文件检查,您可以以较不模糊的方式实现任何所需的行为。