2016-12-30 12 views
0

私は、.HDF5データファイルのリストをループし、その後にいくつかの操作を行いたいと思います。ですから、各ファイルごとに個別に操作を行わないように、私はそれをループしたいと思います。 は、私はその後、次の...はHDF5ファイルのリストをループします

import os 
import h5py 

# Read in 2A.GPM.DPR 
os.chdir('/home/unix/Desktop/source') 
file_name = ['2A.GPM.DPR.V6-20160118.20150620-S060925-E074157.007431.V04A.HDF5', 
      '2A.GPM.DPR.V6-20160118.20150801-S100900-E114133.008087.V04A.HDF5'] 
for n in file_name: 
    print n 
    # 
    f = h5py.File(file_name, 'r') 
    ## 

は、私は次のエラー

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-26-e6813194d502> in <module>() 
     6  print n 
     7  # 
----> 8  f = h5py.File(file_name, 'r') 

/home/unix/anaconda2/lib/python2.7/site-packages/h5py/_hl/files.pyc in __init__(self, name, mode, driver, libver, userblock_size, swmr, **kwds) 
    265      # encoding, just pass it on as-is. Note Unicode 
    266      # objects can always be encoded. 
--> 267      name = name.encode(sys.getfilesystemencoding()) 
    268     except (UnicodeError, LookupError): 
    269      pass 

AttributeError: 'list' object has no attribute 'encode' 

は、だから、このエラーが何ができるか知っていますたのですか? ありがとうございます!

答えて

2

ファイルを開くのではなく、代わりに.Fileメソッドにリストを送ります。あなたは、次のようにコードを変更する必要があります。

import os 
import h5py 

# Read in 2A.GPM.DPR 
os.chdir('/home/unix/Desktop/source') 
file_names = ['2A.GPM.DPR.V6-20160118.20150620-S060925-E074157.007431.V04A.HDF5', 
      '2A.GPM.DPR.V6-20160118.20150801-S100900-E114133.008087.V04A.HDF5'] 
for file_name in file_names: 
    print file_name 
    # 
    f = h5py.File(file_name, 'r') 
    ## 

あなたは、ファイル名のリストをループして一度に一つのファイル名を提供しています。

こちらがお役に立てば幸いです。

+0

はい、動作します。 – Markus

関連する問題