h5py--OSError: Unable to open file (file is already open for write / unable to lock file) 解决方案

报错情况和解决方法

Error1

Traceback (most recent call last):
  File "main.py", line 119, in <module>
    train_loader = data.get_loader('train')
  File "/home/liuyibing/vqa/bottom-up-attention-vqa/utilities/dataset.py", line 72, in get_loader
    image_feature_path,
  File "/home/liuyibing/vqa/bottom-up-attention-vqa/utilities/dataset.py", line 97, in __init__
    self.img_id2idx = self._create_img_id_to_idx()
  File "/home/liuyibing/vqa/bottom-up-attention-vqa/utilities/dataset.py", line 106, in _create_img_id_to_idx
    with h5py.File(self.image_features_path, 'r') as features_file:
  File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/h5py/_hl/files.py", line 312, in __init__
    fid = make_fid(name, mode, userblock_size, fapl, swmr=swmr)
  File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/h5py/_hl/files.py", line 142, 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 is already open for write (may use <h5clear file> to clear file consistency flags))

这是由于打开h5py的文件后,没有及时关闭file,即file.close()没有调用。所以存在h5py文件flags的不一致性,所以我们直接清理一下该文件的flags即可:bash h5clear -s error_file.h5

Error2

>>> a = h5py.File('trainval_36.h5', 'r')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/h5py/_hl/files.py", line 312, in __init__
    fid = make_fid(name, mode, userblock_size, fapl, swmr=swmr)
  File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/h5py/_hl/files.py", line 142, 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 (unable to lock file, errno = 11, error message = 'Resource temporarily unavailable')

这个报错和上面情况有些区别,但在我这里都是因为flags引起的。(具体是因为:这个文件在flags不一致的情况下被我移动了)
注意这里 如果直接h5clear将由如下错误:

h5clear error: h5tools_fopen

解决方案也很简单,直接在python下read这个h5py文件,将报错形式换一种,再调用bash h5clear -s error_file.h5即可解决。

如下所示:

  • 打开python的命令端,调用h5py.File(‘file.h5’, ‘r’)

    
    Python 3.7.6 (default, Jan  8 2020, 19:59:22)
    [GCC 7.3.0] :: Anaconda, Inc. on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import h5py
    >>> a = h5py.File('trainval_36.h5', 'r')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/h5py/_hl/files.py", line 312, in __init__
        fid = make_fid(name, mode, userblock_size, fapl, swmr=swmr)
      File "/home/share/liuyibing/Anaconda3/envs/py3_torch_v1.4/lib/python3.7/site-packages/h5py/_hl/files.py", line 142, 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 is already open for write (may use <h5clear file> to clear file consistency flags))
    
  • h5clear

    h5clear -s trainval_36.h5
    
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值