如何使用tables访问含冒号名称的Simcenter/Nastran HDF5数据块?
解决PyTables读取含冒号的HDF5数据块路径问题
我之前用h5py和PyTables都能正常读取MSC/Nastran生成的HDF5文件,但读取Simcenter/Nastran生成的同类型文件时遇到了问题——数据块名称包含冒号。
正常工作的h5py写法
hf = h5py.File('solidbeam-3prtfem-sol101.hdf', 'r') myElm = hf['model']['geom2:elem_data']['geom2_chexa']
失效的PyTables常规写法
hft = tables.open_file('solidbeam-3prtfem-sol101.hdf', 'r') myElmTable = hft.model.geom2:elem_data.geom2_chexa # 冒号导致语法错误
遍历后确认数据块路径为/model/geom2:elem_data/geom2_chexa,以下是两种正确的PyTables引用方式:
正确写法1:使用get_node()方法指定完整路径
hft = tables.open_file('solidbeam-3prtfem-sol101.hdf', 'r') myElmTable = hft.get_node('/model/geom2:elem_data/geom2_chexa')
正确写法2:逐层索引访问(与h5py逻辑一致)
hft = tables.open_file('solidbeam-3prtfem-sol101.hdf', 'r') myElmTable = hft.root['model']['geom2:elem_data']['geom2_chexa']
原因说明
PyTables的属性访问(.)会将冒号识别为语法符号而非节点名称的一部分,而字符串路径传入get_node()或索引式访问会完整保留节点名称的原始字符,不会解析特殊符号。
内容的提问来源于stack exchange,提问作者gbisson
相关产品推荐
相关产品推荐

