awips2/pythonPackages/h5py/docs/source/guide/group.rst
root 57877615f5 Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 2b462d8665 [formerly 133dc97f67] [formerly a02aeb236c] [formerly a02aeb236c [formerly 9f19e3f712]] [formerly 2b462d8665 [formerly 133dc97f67] [formerly a02aeb236c] [formerly a02aeb236c [formerly 9f19e3f712]] [formerly 06a8b51d6d [formerly a02aeb236c [formerly 9f19e3f712] [formerly 06a8b51d6d [formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f]]]]]
Former-commit-id: 06a8b51d6d
Former-commit-id: 2c3569dd39 [formerly 9bb8decbcf] [formerly 8e80217e59] [formerly e2ecdcfe33 [formerly 377dcd10b9] [formerly 8e80217e59 [formerly 3360eb6c5f]]]
Former-commit-id: e2ecdcfe33 [formerly 377dcd10b9]
Former-commit-id: e2ecdcfe33
Former-commit-id: 7dbd17a5aa
2012-01-06 08:55:05 -06:00

178 lines
5 KiB
ReStructuredText
Executable file

=============
Group Objects
=============
Creating and using groups
-------------------------
Groups are the container mechanism by which HDF5 files are organized. From
a Python perspective, they operate somewhat like dictionaries. In this case
the "keys" are the names of group members, and the "values" are the members
themselves (:class:`Group` and :class:`Dataset`) objects.
Group objects also contain most of the machinery which makes HDF5 useful.
The :ref:`File object <hlfile>` does double duty as the HDF5 *root group*, and
serves as your entry point into the file:
>>> f = h5py.File('foo.hdf5','w')
>>> f.name
'/'
>>> f.keys()
[]
New groups are easy to create:
>>> grp = f.create_group("bar")
>>> grp.name
'/bar'
>>> subgrp = grp.create_group("baz")
>>> subgrp.name
'/bar/baz'
Datasets are also created by a Group method:
>>> dset = subgrp.create_dataset("MyDS", (100,100), dtype='i')
>>> dset.name
'/bar/baz/MyDS'
Accessing objects
-----------------
Groups implement a subset of the Python dictionary convention. They have
methods like ``keys()``, ``values()`` and support iteration. Most importantly,
they support the indexing syntax, and standard exceptions:
>>> myds = subgrp["MyDS"]
>>> missing = subgrp["missing"]
KeyError: "Name doesn't exist (Symbol table: Object not found)"
Objects can be deleted from the file using the standard syntax::
>>> del subgroup["MyDataset"]
Group objects implement the following subset of the Python "mapping" interface:
- Container syntax: ``if name in group``
- Iteration; yields member names: ``for name in group``
- Length: ``len(group)``
- :meth:`keys() <Group.keys>`
- :meth:`values() <Group.values>`
- :meth:`items() <Group.items>`
- :meth:`iterkeys() <Group.iterkeys>`
- :meth:`itervalues() <Group.itervalues>`
- :meth:`iteritems() <Group.iteritems>`
- :meth:`__setitem__() <Group.__setitem__>`
- :meth:`__getitem__() <Group.__getitem__>`
- :meth:`__delitem__() <Group.__delitem__>`
- :meth:`get() <Group.get>`
.. _softlinks:
Soft links
----------
Like a UNIX filesystem, HDF5 groups can contain "soft" or symbolic links,
which contain a text path instead of a pointer to the object itself. You
can easily create these in h5py:
>>> myfile = h5py.File('foo.hdf5','w')
>>> group = myfile.create_group("somegroup")
>>> myfile["alias"] = h5py.SoftLink('/somegroup')
Once created, soft links act just like regular links. You don't have to
do anything special to access them:
>>> print myfile["alias"]
<HDF5 group "/alias" (0 members)>
However, they "point to" the target:
>>> myfile['alias'] == myfile['somegroup']
True
If the target is removed, they will "dangle":
>>> del myfile['somegroup']
>>> print myfile['alias']
KeyError: 'Component not found (Symbol table: Object not found)'
.. note::
The class h5py.SoftLink doesn't actually do anything by itself; it only
serves as an indication to the Group object that you want to create a
soft link.
External links
--------------
New in HDF5 1.8, external links are "soft links plus", which allow you to
specify the name of the file as well as the path to the desired object. You
can refer to objects in any file you wish. Use similar syntax as for soft
links:
>>> myfile = h5py.File('foo.hdf5','w')
>>> myfile['ext link'] = h5py.ExternalLink("otherfile.hdf5", "/path/to/resource")
When the link is accessed, the file "otherfile.hdf5" is opened, and object at
"/path/to/resource" is returned.
.. note::
Since the object retrieved is in a different file, its ".file" and ".parent"
properties will refer to objects in that file, *not* the file in which the
link resides.
Getting info on links
---------------------
Although soft and external links are designed to be transparent, there are some
cases where it is valuable to know when they are in use. The Group method
"get" takes keyword arguments which let you choose whether to follow a link or
not, and to return the class of link in use (soft or external).
Reference
---------
.. autoclass:: h5py.Group
**``Group`` methods**
.. automethod:: h5py.Group.__setitem__
.. automethod:: h5py.Group.__getitem__
.. automethod:: h5py.Group.create_group
.. automethod:: h5py.Group.create_dataset
.. automethod:: h5py.Group.require_group
.. automethod:: h5py.Group.require_dataset
.. automethod:: h5py.Group.copy
.. automethod:: h5py.Group.visit
.. automethod:: h5py.Group.visititems
**Dictionary-like methods**
.. automethod:: h5py.Group.keys
.. automethod:: h5py.Group.values
.. automethod:: h5py.Group.items
.. automethod:: h5py.Group.iterkeys
.. automethod:: h5py.Group.itervalues
.. automethod:: h5py.Group.iteritems
.. automethod:: h5py.Group.get
**Properties common to all HDF5 objects:**
.. autoattribute:: h5py.Group.file
.. autoattribute:: h5py.Group.parent
.. autoattribute:: h5py.Group.name
.. autoattribute:: h5py.Group.id
.. autoattribute:: h5py.Group.ref
.. autoattribute:: h5py.Group.attrs