Re: Reopen HDF5 file to add more data? [message #90198 is a reply to message #90195] |
Tue, 10 February 2015 09:25  |
dg86
Messages: 118 Registered: September 2012
|
Senior Member |
|
|
On Tuesday, February 10, 2015 at 3:17:39 AM UTC-5, superchromix wrote:
> On Monday, February 9, 2015 at 5:25:56 PM UTC+1, David Grier wrote:
>> Dear Folks,
>>
>> It appears not to be possible to add more data to an HDF5 file once
>> the file has been closed, at least not in the IDL implementation.
>> Is that correct?
>>
>> Here's a minimal example of what I'm trying to do. This triggers
>> the error that inspires my question.
>>
>> Is there a way to reopen an file for writing, or do I have to read in the
>> old archive and recopy everything to a new archive?
>>
>> Many thanks,
>>
>> David
>>
>> ;--- cut here for minimal example ---
>> filename = 'testfile.h5'
>> group = 'group'
>> name = 'testdata'
>>
>> ;;; Create and close an HDF5 archive with one group and no data
>> fid = h5f_create(filename)
>> gid = h5g_create(fid, group)
>> h5g_close, gid
>> h5f_close, fid
>>
>> ;;; Reopen the HDF5 archive to add some data to the group
>> fid = h5f_open(filename)
>> gid = h5g_open(fid, group)
>>
>> ;;; attempt to write some data
>> a = bindgen(640, 480)
>> tid = h5t_idl_create(a)
>> sid = h5s_create_simple(a.dim)
>> did = h5d_create(gid, name, tid, sid) ;;; <-- this fails
>> h5d_write, did, a
>>
>> ;;; close the file
>> h5d_close, did
>> h5s_close, sid
>> h5t_close, tid
>> h5g_close, gid
>> h5f_close, fid
>
>
> hi David,
>
> You need to use H5D_EXTEND to increase the size of your dataset before you can append additional data.
>
> best
> Mark
It turns out the answer is even simpler than that.
H5F_OPEN opens a file read-only by default. The /WRITE switch opens it
read-write. Everything is working now!
TTFN,
David
|
|
|