如何修复“ HDF5-DIAG:无法打开文件错误”?

时间:2019-11-15 16:28:55

标签: c hdf5 meep

尝试运行MEEP仿真时,出现以下错误:

HDF5-DIAG: Error detected in HDF5 (1.10.5) thread 0:
  #000: H5F.c line 509 in H5Fopen(): unable to open file
    major: File accessibilty
    minor: Unable to open file
  #001: H5Fint.c line 1498 in H5F_open(): unable to open file: time = Fri Nov 15 16:56:54 2019
, name = '*.h5', tent_flags = 0
    major: File accessibilty
    minor: Unable to open file
  #002: H5FD.c line 734 in H5FD_open(): open failed
    major: Virtual File Layer
    minor: Unable to initialize object
  #003: H5FDsec2.c line 346 in H5FD_sec2_open(): unable to open file: name = '*.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0
    major: File accessibilty
    minor: Unable to open file
h5topng error: error opening HD5 file
rm: *.h5: No such file or directory

有人可以启发我如何解决此问题/理解错误吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

免责声明:我从未与MEEP合作过。

错误似乎表明文件不存在:

#003: H5FDsec2.c line 346 in H5FD_sec2_open(): unable to open file: name = '*.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0

因此,这似乎是核心问题。 再往下走,似乎传递给H5FD_sec2_open()的文件名为*.h5,这很可能是无效的文件名。我希望您希望将诸如foo.h5relative/path/to/foo.h5/absolute/path/to/foo.h5之类的内容传递给H5FD_sec2_open()函数。

通配符通常是这类函数无法处理/解释的。这是一个较高级别的概念,需要“更多文件系统访问权限”来执行任何有用的操作,因为接收通配符的任何人都必须获取文件和目录的列表,并找出与该通配符匹配的文件系统条目。

因此,我的回答是:确保将有效的文件路径传递给相应的文件打开功能。 此外,您可能需要扩展程序,以便在将其传递给相应的MEEP函数之前检查它是否为有效文件,以使您能够更好地控制错误和用户反馈。