我想循环遍历.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'
所以你知道这个错误是什么吗? 谢谢你的帮助!
答案 0 :(得分: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')
##
您循环浏览文件名列表,并一次提供 一个文件名 。
我希望这会有所帮助。