H5py:以写入模式重新打开文件会删除以前的数据
H5py: reopening file in write mode deletes previous data
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
下。
如何在不删除已存储的旧数据的情况下重新打开文件并写入新数据?
快速回答
将h5py.File('test','w')
更改为h5py.File('test','a')
(或h5py.File('test')
,默认为后者)。
为什么
当你实例化一个h5py.File
对象时,你必须指定一个mode
作为第二个参数。这必须是以下之一:
r
只读,文件必须存在
r+
Read/write,文件必须存在
w
创建文件,如果存在则截断
w-
or x
创建文件,如果存在则失败
a
Read/write 如果存在,否则创建(默认)
使用 a
是一种快速解决方法,但如果您的程序并不总是知道该文件是否已经存在,则存在风险。通过使用其他模式以及文件检查,您可以以更明确的方式实现任何所需的行为。
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
下。
如何在不删除已存储的旧数据的情况下重新打开文件并写入新数据?
快速回答
将h5py.File('test','w')
更改为h5py.File('test','a')
(或h5py.File('test')
,默认为后者)。
为什么
当你实例化一个h5py.File
对象时,你必须指定一个mode
作为第二个参数。这必须是以下之一:
r
只读,文件必须存在r+
Read/write,文件必须存在w
创建文件,如果存在则截断w-
orx
创建文件,如果存在则失败a
Read/write 如果存在,否则创建(默认)
使用 a
是一种快速解决方法,但如果您的程序并不总是知道该文件是否已经存在,则存在风险。通过使用其他模式以及文件检查,您可以以更明确的方式实现任何所需的行为。