【问题标题】:H5py: reopening file in write mode deletes previous dataH5py:以写入模式重新打开文件会删除以前的数据
【发布时间】:2015-09-13 12:19:35
【问题描述】:
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 下。

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

【问题讨论】:

  • 你试过追加模式吗?

标签: python file hdf5 h5py


【解决方案1】:

快速解答

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

为什么

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多