h5py OSError:无法打开文件(找不到文件签名)

时间:2017-09-08 23:32:49

标签: python h5py

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

  

降低/ RHO = 0.75 / 2 /数据/快照

当我从的缩减

子目录运行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 /数据/快照

现在,当我运行上一个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格式。

1 个答案:

答案 0 :(得分:1)

我真的不知道我在这里谈论的是什么,如果这没有意义或帮助或只是没有关系,请提前对不起。

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

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

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

如果它是您自己的文件系统,那么您应该能够允许flock(),但我不知道该怎么做。如果 NFS

This可能对您有所帮助

我当然有兴趣听听你的表现如何?