Discovering keys using h5py in python3

本秂侑毒 提交于 2019-12-09 07:59:21

问题


In python2.7, I can analyze an hdf5 files keys use

$ python
>>> import h5py
>>> f = h5py.File('example.h5', 'r')
>>> f.keys()
[u'some_key']

However, in python3.4, I get something different:

$ python3 -q
>>> import h5py
>>> f = h5py.File('example.h5', 'r')
>>> f.keys()
KeysViewWithLock(<HDF5 file "example.h5" (mode r)>)

What is KeysViewWithLock, and how can I examine my HDF5 keys in Python3?


回答1:


From h5py's website (http://docs.h5py.org/en/latest/high/group.html#dict-interface-and-links):

When using h5py from Python 3, the keys(), values() and items() methods will return view-like objects instead of lists. These objects support containership testing and iteration, but can’t be sliced like lists.

This explains why we can't view them. The simplest answer is to convert them to a list:

>>> list(for.keys())

Unfortunately, I run things in iPython, and it uses the command 'l'. That means that approach won't work.

In order to actually view them, we need to take advantage of containership testing and iteration. Containership testing means we'd have to already know the keys, so that's out. Fortunately, it's simple to use iteration:

>>> [key for key in f.keys()]
['mins', 'rects_x', 'rects_y']

I've created a simple function that does this automatically:

def keys(f):
    return [key for key in f.keys()]

Then you get:

>>> keys(f)
['mins', 'rects_x', 'rects_y']


来源:https://stackoverflow.com/questions/31037088/discovering-keys-using-h5py-in-python3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!