hdf5 设计者是否解决了与打开 .hdf5 文件相关的损坏问题?

Have hdf5 designers resolved the corruption issue related to opening .hdf5 files?

我正在 运行ning 一个代码,它将 .hdf5 文件作为输入(由模拟生成),然后分析它们并生成一些统计数据并通过 运行ning 命令行绘制: python3 Collector.py 在 Fedora 21 Linux 的 Konsole shell 中。我在工作目录中名为 gizmoutilities 的两个不同文件夹中有很多 .py 例程。 snapshot_index.hdf5 文件分别(使用 globus 软件)从另一台机器 运行 将模拟传输到我笔记本电脑工作目录内名为 output 的本地目录中。 (有很多文件对应于 "index" 运行ning 从 0 到 600 但我只需要两个这样的索引,例如 snapshot_396.hdf5 和 snapshot_600.hdf5)。模拟 运行 有两种不同的模式:低分辨率和高分辨率。

当千字节大小的低分辨率 .hdf5 文件是 part 表达式的输入时(在上面提到的主要 python 代码中),我能够 运行编码并产生结果,但是当我将大尺寸高分辨率 .hdf5 文件作为 part 表达式的输入时,我收到以下错误消息:

# in utilities.simulation.Snapshot():
  read snapshot_times.txt
  reading snapshot index = 600, redshift = 0.000


# in gizmo.gizmo_io.Read():
  reading header from: ./output/snapshot_600.hdf5

Traceback (most recent call last):
  File "Collector.py", line 12, in <module>
    part=gizmo.io.Read.read_snapshots('all', 'index', 600, element_indices=None)
  File "/home/username/Desktop/Projects/PaperMaterials/DM_Dominated_Objects/NewFolder2/covering_fractions/Simulations/gizmo/gizmo_io.py", line 314, in read_snapshots
    'index', snapshot_index, simulation_directory, snapshot_directory, simulation_name)
  File "/home/username/Desktop/Projects/PaperMaterials/DM_Dominated_Objects/NewFolder2/covering_fractions/Simulations/gizmo/gizmo_io.py", line 513, in read_header
    file_in = h5py.File(file_name, 'r')  # open hdf5 snapshot file
  File "/usr/lib/python3.4/site-packages/h5py/_hl/files.py", line 222, in __init__
    fid = make_fid(name, mode, userblock_size, fapl)
  File "/usr/lib/python3.4/site-packages/h5py/_hl/files.py", line 79, in make_fid
    fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl)
  File "h5f.pyx", line 71, in h5py.h5f.open (h5py/h5f.c:1809)
OSError: Unable to open file (Truncated file: eof = 933756928, sblock->base_addr = 0, stored_eoa = 1765865624)

我不明白错误的意思。但是当我对该主题进行搜索时,我注意到这不是关于 .hdf5 文件 () 的新问题,只是无法打开文件的原因与我的情况不同.据我了解(不确定是否正确),文件太大,因此 t运行cated。如果是这种情况,解决方案是什么?如果我错了那么问题是什么? 非常感谢您的帮助。

您的输入文件似乎已损坏。如果您 运行 在输入文件上使用命令行实用程序 h5dumph5stath5ls 会怎样?

我认为您的问题与 HDF5 的设计者或您链接的其他问题(与编写 HDF5 文件时崩溃的程序有关)没有任何关系。您的编写程序很可能有错误。您可以通过查看其他有效的 HDF5 程序是否可以处理您的文件来验证这一点。

您的文件似乎小于 1 GB,这对于 HDF5 来说不算大。