我正在尝试使函数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
是假的。感谢。
我得到了以下内容:
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
答案 0 :(得分:0)
而不是改变字典,尝试制作一个新的字典,并改变它。您可以在处理FileInfo = FileInfo.copy()
的情况后立即将FileInfo is None
放在函数顶部附近。