【问题标题】:h5py OSError: Unable to open file (File signature not found)h5py OSError:无法打开文件(未找到文件签名)
【发布时间】:2017-09-08 23:32:48
【问题描述】:

我对使用 h5py 时收到的错误感到有些困惑。我正在尝试应用 python 脚本来循环遍历位于不同目录中的 h5py 文件集。例如,第一组 h5py 文件位于

缩减/rho=0.75/2/Data/snapshots

当我 Reduced 的子目录运行 python 脚本时

精简/test_h5py

使用以下 python 脚本

import h5py
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors               
import cmocean
import os

de.logging_setup.rootlogger.setLevel('ERROR')


# Plot writes                                                                                                                          

path = '../rho=0.75/2/Data/snapshots'
for filename in os.listdir(path):
    with h5py.File(path+'/'+filename,'r') as file:

一切正常,脚本循环数据并给我一个输出。现在,当我尝试将相同的 python 脚本应用于其他数据时出现问题,即位于位于的 h5py 文件集

减少/rho=0.75/4/Data/snapshots

现在,当我运行之前的 python 脚本时,只修改了从 2 到 4 的路径

import h5py
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors               
import cmocean
import os

de.logging_setup.rootlogger.setLevel('ERROR')


# Plot writes                                                                                                                          

path = '../rho=0.75/4/Data/snapshots'
for filename in os.listdir(path):
    with h5py.File(path+'/'+filename,'r') as file:

我收到以下错误

Traceback (most recent call last):
  File "newest_edit.py", line 17, in <module>
    with h5py.File(path+'/'+filename,'r') as file:
  File "/usr/local/lib/python3.5/site-packages/h5py/_hl/files.py", line 269, in __init__
    fid = make_fid(name, mode, userblock_size, fapl, swmr=swmr)
  File "/usr/local/lib/python3.5/site-packages/h5py/_hl/files.py", line 99, in make_fid
    fid = h5f.open(name, flags, fapl=fapl)
  File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
  File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
  File "h5py/h5f.pyx", line 78, in h5py.h5f.open
OSError: Unable to open file (file signature not found)

任何人都可以理解这一点吗?我认为这可能是一个 os.listdir() 错误,但搜索后我没有找到任何解决问题的方法。感谢您的帮助。

编辑:

我忘了提。当我在 Jupyter 笔记本中运行 python 脚本并将脚本应用于单个 h5py 文件时,它对于 2 和 4 路径都可以正常工作。 h5py 文件打开,我可以检索存储在其中的数据,所以我无法想象它会是损坏的文件或不是 hdf5 格式的。

【问题讨论】:

  • 消息文件签名未找到表明文件已损坏或不是 HDF5 格式
  • @Fady Saad 对不起,我忘了提。当我在 Jupyter 笔记本中运行 python 脚本并将脚本应用于单个 h5py 文件时,它工作得很好,h5py 文件打开并且我可以检索数据,所以我无法想象它会是损坏的文件或不是 hdf5 格式。

标签: python h5py


【解决方案1】:

我真的不知道我在说什么,如果这没有意义或没有帮助或只是不相关,请提前抱歉。

这是一个非常烦人的错误,一年多来没有人试图回答,所以我认为我所拥有的一点点知识可能会有所帮助。

我在处理集群时遇到了类似的问题。事实证明,h5py 使用了名为 flock() 的东西,这有时会对文件系统性能产生负面影响。

因为这个flock() 有时是不允许的。如果您正在使用其他人的文件系统,请询问管理员他们是否会允许它,如果没有,那么我找不到解决方法(我没有尝试找到不使用 flock() 的其他库)。

如果它是您自己的文件系统,那么您应该能够允许flock(),但我不确定如何执行此操作。 This 如果是 NFS

可能会对你有所帮助

我当然很想听听你的进展如何?

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 2016-10-31
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    相关资源
    最近更新 更多