Tôi đã tạo tệp HDF5 rõ ràng mà không gặp bất kỳ sự cố nào, theo Ubuntu 12.04 (phiên bản 32 bit), sử dụng Anaconda như phân phối Python và viết trong sổ ghi chép ipython. Các dữ liệu cơ bản là tất cả các mảng numpy. Ví dụ,Tệp HDF5 được tạo bằng h5py không thể mở bằng h5py
import numpy as np
import h5py
f = h5py.File('myfile.hdf5','w')
group = f.create_group('a_group')
group.create_dataset(name='matrix', data=np.zeros((10, 10)), chunks=True, compression='gzip')
Nếu tôi cố gắng mở tập tin này từ một máy tính xách tay iypthon mới, tuy nhiên, tôi nhận được một thông báo lỗi:
f = h5py.File('myfile.hdf5', "r")
---------------------------------------------------------------------------
IOError Traceback (most recent call last)
<ipython-input-4-b64ac5089cd4> in <module>()
----> 1 f = h5py.File(file_name, "r")
/home/sarah/anaconda/lib/python2.7/site-packages/h5py/_hl/files.pyc in __init__(self, name, mode, driver, libver, userblock_size, **kwds)
220
221 fapl = make_fapl(driver, libver, **kwds)
--> 222 fid = make_fid(name, mode, userblock_size, fapl)
223
224 Group.__init__(self, fid)
/home/sarah/anaconda/lib/python2.7/site-packages/h5py/_hl/files.pyc in make_fid(name, mode, userblock_size, fapl, fcpl)
77
78 if mode == 'r':
---> 79 fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl)
80 elif mode == 'r+':
81 fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl)
/home/sarah/anaconda/lib/python2.7/site-packages/h5py/h5f.so in h5py.h5f.open (h5py/h5f.c:1741)()
IOError: Unable to open file (Unable to find a valid file signature)
Bạn có thể cho tôi biết những gì mà chữ ký tập tin thiếu là? Tôi đã bỏ lỡ điều gì đó khi tạo tệp?
Bạn có 'f.close() '* ghi file * trước khi thử để mở lại? Ngoài ra, mã ví dụ của bạn không thực thi được: các biến 'Mfrgroup',' fgroup_ID', 'pos',' Msgroup' 'sgroup_ID' và' tên' không được xác định. – farenorth
Nó thường được khuyến khích khi ghi vào hoặc từ các tệp (sử dụng bất kỳ hàm tạo tệp nào, không chỉ h5py) để sử dụng câu lệnh ['with'] (http://stackoverflow.com/questions/3012488/what-is-the-python -with-statement-designed-for). Ví dụ 'với h5py.File ('myfile.hdf5', 'w') là f:'. Điều này làm cho nó để bạn không phải đóng một cách rõ ràng các tập tin. Mặt khác, nó làm cho nó khó khăn để gỡ lỗi I/O tập tin tương tác. – farenorth
Ngoài ra, bạn có thực sự cần tạo tất cả các biến đó trong tập dữ liệu của mình để tạo lỗi này không? Bạn có gặp lỗi tương tự nếu bạn chỉ tạo một trong các biến đó không? – farenorth