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 中。我在工作目录中名为 gizmo
和 utilities
的两个不同文件夹中有很多 .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。如果是这种情况,解决方案是什么?如果我错了那么问题是什么?
非常感谢您的帮助。
您的输入文件似乎已损坏。如果您 运行 在输入文件上使用命令行实用程序 h5dump
、h5stat
或 h5ls
会怎样?
我认为您的问题与 HDF5 的设计者或您链接的其他问题(与编写 HDF5 文件时崩溃的程序有关)没有任何关系。您的编写程序很可能有错误。您可以通过查看其他有效的 HDF5 程序是否可以处理您的文件来验证这一点。
您的文件似乎小于 1 GB,这对于 HDF5 来说不算大。
我正在 运行ning 一个代码,它将 .hdf5 文件作为输入(由模拟生成),然后分析它们并生成一些统计数据并通过 运行ning 命令行绘制: python3 Collector.py
在 Fedora 21 Linux 的 Konsole shell 中。我在工作目录中名为 gizmo
和 utilities
的两个不同文件夹中有很多 .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
文件 (
您的输入文件似乎已损坏。如果您 运行 在输入文件上使用命令行实用程序 h5dump
、h5stat
或 h5ls
会怎样?
我认为您的问题与 HDF5 的设计者或您链接的其他问题(与编写 HDF5 文件时崩溃的程序有关)没有任何关系。您的编写程序很可能有错误。您可以通过查看其他有效的 HDF5 程序是否可以处理您的文件来验证这一点。
您的文件似乎小于 1 GB,这对于 HDF5 来说不算大。