2016-12-30 1 views
0

Je voudrais boucler sur une liste de fichiers de données .HDF5, et faire quelques opérations après cela. Donc, afin de ne pas faire chaque opération sur chaque fichier individuellement, je voudrais boucler dessus. Je ne suit ...boucle sur une liste de fichiers 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') 
    ## 

Après que je reçois l'erreur suivante

--------------------------------------------------------------------------- 
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' 

Alors savez-vous ce que cette erreur pourrait être? Nous vous remercions de votre aide!

Répondre

2

Vous n'ouvrez pas les fichiers, mais vous alimentez une liste à la méthode .File. Vous devez changer votre code à ce qui suit:

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') 
    ## 

Vous bouclez dans votre liste de noms de fichiers et de fournir un nom de fichier à la fois.

J'espère que cela aide.

+0

Oui, ça marche, merci beaucoup! – Markus