2013-05-21 63 views
2

我想從我從 MODIS網站下載的hdf文件中提取數據。鏈接中提供了一個示例文件。在使用h5py軟件包讀取hdf文件時出錯python

>>> import h5py 
>>> f = h5py.File('MYD08_M3.A2002182.051.2008334061251.psgscs_000500751197.hdf', 'r') 

我得到的錯誤:我用下面的代碼行讀取HDF文件

Traceback (most recent call last): 
    File "<pyshell#3>", line 1, in <module> 
f = h5py.File('MYD08_M3.A2002182.051.2008334061251.psgscs_000500751197.hdf', 'r') 
    File "C:\Python27\lib\site-packages\h5py\_hl\files.py", line 165, in __init__ 
fid = make_fid(name, mode, userblock_size, fapl) 
    File "C:\Python27\lib\site-packages\h5py\_hl\files.py", line 57, in make_fid 
fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl) 
    File "h5f.pyx", line 70, in h5py.h5f.open (h5py\h5f.c:1640) 
IOError: unable to open file (File accessability: Unable to open file) 

我已經從不同的來源嘗試了其他幾個HDF文件,但我得到相同的錯誤。這裏似乎有什麼錯?

回答

4

我想可能有兩個可能的問題:

1)作爲文件擴展名是「HDF」,也許這是一個HDF4文件。 HDF5文件通常具有「.hdf5」或「.h5·」擴展名。我不確定h5py是否能夠讀取HDF4文件。

2)也許你必須改變文件本身的權限。如果你在一臺linux機器上試試:chmod +r file.hdf

你可以試着用HDFView打開你的文件。該軟件可用於多種平臺。您可以使用它輕鬆檢查文件的屬性。

+0

感謝您的回覆。我使用HDFView來顯示來自hdf文件的數據,它的工作原理和文件都是hdf4格式。正如你所說,問題必須是h5py不能支持hdf4格式。我遇到了支持hdf4格式的pyhdf。我想這會解決我的問題。順便說一句,我沒有chmod,我正在使用windows。 – Yash

+1

太棒了!希望你可以用'pyhdf'完成你的工作。 –

+1

另一種方法是使用'h4toh5'將文件轉換爲HDF5。這允許依賴最新的工具。工具可在[項目主頁](http://www.hdfgroup.org/h4toh5/)上找到。 –

2

這聽起來像是文件權限錯誤,甚至文件存在。也許增加一些檢查,如

import os 

hdf_file = 'MYD08_M3.A2002182.051.2008334061251.psgscs_000500751197.hdf' 

if not os.path.isfile(hdf_file): 
    print 'file %s not found' % hdf_file 

if not os.access(hdf_file, os.R_OK): 
    print 'file %s not readable' % hdf_file 

f = h5py.File(hdf_file, 'r') 
+0

感謝您的回覆。這個文件實際上存在,實際上它們都是139個,但爲了確保我執行了你建議的檢查,循環遍歷文件夾中的每個文件以發現文件存在並且可以訪問。 – Yash

0

我有同樣的問題,後來確定了我的文件只有「只讀」,由於某種原因停止h5py閱讀。修改「寫入」權限後,我可以讀取它。不知道爲什麼這樣設置。