0

我试图让函数 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
4

1 回答 1

0

与其修改字典,不如尝试制作一个新字典,然后对其进行修改。您可以通过FileInfo = FileInfo.copy()在处理 where 的情况之后将其放在函数顶部附近来做到这一点FileInfo is None

于 2012-12-31T16:26:51.840 回答