我对使用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格式。
答案 0 :(得分:1)
我真的不知道我在这里谈论的是什么,如果这没有意义或帮助或只是没有关系,请提前对不起。
这是一个非常烦人的错误,没有人试图在一年多的时间内回答,所以我认为我所拥有的一点点知识可能有所帮助。
我在集群上工作时遇到了类似的问题。事实证明,h5py
使用了名为flock()
的内容,这有时会对文件系统性能产生负面影响。
因此有时不允许使用flock()
。如果你正在处理别人的文件系统,那么请问管理员他们是否会这样做,如果没有,那么我找不到解决方法(我没有尝试找到其他不使用flock()
的库)。
如果它是您自己的文件系统,那么您应该能够允许flock()
,但我不知道该怎么做。如果 NFS
我当然有兴趣听听你的表现如何?