使用 pytables 获取 hdf5 组的名称

Get name of an hdf5 group using pytables

import tables
f = tables.open_file('my_file.hdf5', mode='w')
f.create_group(f.root, name='videos')

我有另一个脚本可以将数据添加到 'videos' 组。该脚本检查 'videos' 组是否已经存在;如果 'videos' 尚不存在,脚本将创建一个 'videos' 组。

如何检查群组是否已经存在?我尝试使用 f.walk_groups() 和 f.root._v_groups,但这似乎不是最佳解决方案。以及如何获得包含 f.root 中所有组的名称(作为字符串)的列表?

您需要做的就是检查根组中是否存在 group/dataset 路径名。这将 return True/False: '/videos' in f.root
所以你可以像这样创建一个 if 块:

if '/videos' in f.root:
    do something

这是一个创建组 + 2 个数组数据集的短代码段,然后打印组和 2 个数据集的逻辑测试。注意arr3不存在。

import tables as tb
import numpy as np

with tb.File('SO_65327481.hdf5', mode='w') as h5f:
    h5f.create_group('/', name='videos')
    arr = np.random.random((10,10))
    h5f.create_array('/videos',name='arr1', obj=arr)
    arr = np.random.random((10,10))
    h5f.create_array('/videos','arr2',obj=arr)

    print ( 'videos exists:', '/videos' in h5f.root)
    print ( 'arr2 exists:', '/videos/arr2' in h5f.root)
    print ( 'arr3 exists:', '/videos/arr3' in h5f.root)

输出将是:

videos exists: True
arr2 exists: True
arr3 exists: False