我试图让函数 VisitAllObjects 接受不同的文件并返回一个字典。但是我目前有什么指向同名?因此,一旦 gdata 运行,fdata 就会更改为 gdata。我怎样才能使它 fdata 和 gdata 等于他们的 gh5 文件中的尊重数据?
f = h5py.File('testfile.gh5', 'r')
g = h5py.File('testfile2.gh5', 'r')
def VisitAllObjects(Group,Path, FileInfo=None):
if FileInfo is None:
FileInfo = {}
for i in Group.items():
if isinstance(i[1], h5py.Group):
VisitAllObjects(i[1], Path + '/' + i[0])
else:
DatasetName = Path + '/' + i[0]
FileInfo[DatasetName] = (Group[DatasetName].shape, Group[DatasetName].dtype)
return FileInfo
fdata = VisitAllObjects(f,'')
gdata = VisitAllObjects(g,'')
在您的帮助下并在调用 visit_all_objects 时添加 file_info ,我能够让它工作。如果您发现这有任何问题,请告诉我,我仍然需要进一步检查,但使用 fdata 和 gdata 会返回不同的数据并且fdata is gdata
是 False。谢谢。
我得到它与以下工作:
def visit_all_objects(Group,Path, file_info=None):
if file_info is None:
file_info = {}
for i in Group.items():
if isinstance(i[1], h5py.Group):
visit_all_objects(i[1], Path + '/' + i[0], file_info)
else:
DatasetName = Path + '/' + i[0]
file_info[DatasetName] = (Group[DatasetName].shape, Group[DatasetName].dtype)
return file_info