Ошибка файла при попытке открыть файл .mat в python с библиотекой h5py

Я пытаюсь получить доступ к части данных (которая называется «маской») в файле .mat, используя следующий код:

import h5py
import numpy as np

g = h5py.File('/Path/to/file.mat')
x = g["mask"]
print(np.array(x))

Кажется, это отлично работает для другого файла .mat, но почему-то для этого я продолжаю получать следующее сообщение об ошибке:

Traceback (most recent call last):
File "/miniconda3/lib/python3.6/site-packages/h5py/_hl/files.py", line 190, in make_fid
fid = h5f.open(name, h5f.ACC_RDWR, 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 85, in h5py.h5f.open
OSError: Unable to open file (file signature not found)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/miniconda3/lib/python3.6/site-packages/h5py/_hl/files.py", line 193, in make_fid
fid = h5f.open(name, h5f.ACC_RDONLY, 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 85, in h5py.h5f.open
OSError: Unable to open file (file signature not found)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "test.py", line 4, in <module>
g = h5py.File('maskH07.mat')
File "/miniconda3/lib/python3.6/site-packages/h5py/_hl/files.py", line 394, in __init__
swmr=swmr)
File "/miniconda3/lib/python3.6/site-packages/h5py/_hl/files.py", line 195, in make_fid
fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl)
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 105, in h5py.h5f.create
OSError: Unable to create file (unable to open file: name = 'maskH07.mat', errno = 17, error message = 'File exists', flags = 15, o_flags = a02)

Был бы очень признателен за любую помощь


person LucTuc    schedule 01.10.2019    source источник
comment
Вы уверены, что файл находится в рабочем каталоге Python? Простая проверка с помощью print(os.listdir()) и print(os.getcwd()).   -  person rinkert    schedule 01.10.2019


Ответы (1)


если вы хотите прочитать файл, который вы можете использовать (файл должен существовать)

g = h5py.File('/Path/to/file.mat', 'r')

если вы хотите записать в файл, который вы можете использовать (файл должен существовать)

g = h5py.File('/Path/to/file.mat', 'w')

если вы хотите, чтобы оба вы могли использовать (если файл существует, обрежьте его, иначе создайте его)

g = h5py.File('/Path/to/file.mat', 'r+')

См. документацию и другое сообщение

person Timothée Dautrême    schedule 01.10.2019